| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 98de761 commit 7632929
7 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1948,7 +1948,7 @@ function addL7MarkerLayer(actionLayer, scene) { | |||
| 1948 | 1948 | return layer; | |
| 1949 | 1949 | } | |
| 1950 | 1950 | ||
| 1951 | - function getL7Layer(l) { | ||
| 1951 | + function getL7Layer(l, sourceInfo) { | ||
| 1952 | 1952 | const typeRule = { | |
| 1953 | 1953 | [MSLayerType.line]: 'LineLayer', | |
| 1954 | 1954 | [MSLayerType.point]: 'PointLayer', | |
@@ -1958,7 +1958,7 @@ function getL7Layer(l) { | |||
| 1958 | 1958 | const source = l.source || {}; | |
| 1959 | 1959 | const layer = new L7Layer({ | |
| 1960 | 1960 | type: typeRule[l.type], | |
| 1961 | - options: { ...l.options, layerID: (l.options || {}).name, featureId: (source.parser || {}).type === 'mvt' ? 'smpid' : undefined } // 解决L7结构化数据监听click事件会返回多个features问题 | ||
| 1961 | + options: { ...l.options, layerID: (l.options || {}).name, featureId: sourceInfo.promoteId } // 解决L7结构化数据监听click事件会返回多个features问题 | ||
| 1962 | 1962 | }); | |
| 1963 | 1963 | // getL7Layer返回原生antv l7 layer的实例 | |
| 1964 | 1964 | const l7Layer = layer.getL7Layer(); | |
@@ -2033,7 +2033,7 @@ export async function addL7Layers({ map, webMapInfo, l7Layers, spriteDatas, opti | |||
| 2033 | 2033 | (l.options || {}).visible !== false && addL7MarkerLayer(actionLayer, scene); | |
| 2034 | 2034 | ChartController.setSceneChartLayer(l.id, actionLayer); | |
| 2035 | 2035 | } else { | |
| 2036 | - const layer = getL7Layer(l); | ||
| 2036 | + const layer = getL7Layer(l, sources[layers[layerIndex].source]); | ||
| 2037 | 2037 | if (!map.getLayer(layer.id)) { | |
| 2038 | 2038 | map.addLayer(layer, beforeLayer && beforeLayer.id); | |
| 2039 | 2039 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -717,6 +717,17 @@ export class WebMap extends mapboxgl.Evented { | |||
| 717 | 717 | } | |
| 718 | 718 | } | |
| 719 | 719 | const sourceOnMap = this.map.getSource(layer.source); | |
| 720 | + if (!Object.keys(dataSource).length && sourceOnMap && sourceOnMap.type === 'vector') { | ||
| 721 | + const matchSource = this._mapInfo.sources[layer.source] || sourceOnMap; | ||
| 722 | + if (matchSource.tiles && matchSource.tiles[0].includes('/rest/maps/')) { | ||
| 723 | + const tileUrl = matchSource.tiles[0]; | ||
| 724 | + const [serverUrl, leftParts] = tileUrl.split('/rest/maps/'); | ||
| 725 | + const [mapName] = leftParts.split('/tileFeature'); | ||
| 726 | + dataSource.url = `${serverUrl}/rest/maps`; | ||
| 727 | + dataSource.mapName = mapName; | ||
| 728 | + dataSource.type = 'REST_MAP'; | ||
| 729 | + } | ||
| 730 | + } | ||
| 720 | 731 | const layout = layer.layout || {}; | |
| 721 | 732 | const overlayLayers = this._formatLayer({ | |
| 722 | 733 | id: layer.id, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -543,6 +543,7 @@ describe('mapboxgl-webmap3.0', () => { | |||
| 543 | 543 | }); | |
| 544 | 544 | ||
| 545 | 545 | it('layerdatas', (done) => { | |
| 546 | + const spyTest = spyOn(mapboxgl, 'Map').and.callFake(mbglmap); | ||
| 546 | 547 | spyOn(FetchRequest, 'get').and.callFake((url) => { | |
| 547 | 548 | if (url.indexOf('map.json') > -1) { | |
| 548 | 549 | return Promise.resolve(new Response(apstudioWebMap_layerData)); | |
@@ -554,10 +555,8 @@ describe('mapboxgl-webmap3.0', () => { | |||
| 554 | 555 | return Promise.resolve(); | |
| 555 | 556 | }); | |
| 556 | 557 | mapstudioWebmap = new WebMap(id, { | |
| 557 | - server: server, | ||
| 558 | - iportalServiceProxyUrl: 'layerdatas' | ||
| 558 | + server: server | ||
| 559 | 559 | }); | |
| 560 | - | ||
| 561 | 560 | mapstudioWebmap.on('addlayerssucceeded', ({ map }) => { | |
| 562 | 561 | expect(map).not.toBeUndefined(); | |
| 563 | 562 | expect(mapstudioWebmap.map).toEqual(map); | |
@@ -567,8 +566,8 @@ describe('mapboxgl-webmap3.0', () => { | |||
| 567 | 566 | expect(style.layers.length).toBe(mapInfo.layers.length); | |
| 568 | 567 | const appreciableLayers = webMapV3.getAppreciableLayers(); | |
| 569 | 568 | const layerList = webMapV3.getLayerCatalog(); | |
| 570 | - expect(layerList.length).toBe(4); | ||
| 571 | - expect(appreciableLayers.length).toBe(4); | ||
| 569 | + expect(layerList.length).toBe(5); | ||
| 570 | + expect(appreciableLayers.length).toBe(5); | ||
| 572 | 571 | expect( | |
| 573 | 572 | appreciableLayers.some( | |
| 574 | 573 | (item) => | |
@@ -585,13 +584,23 @@ describe('mapboxgl-webmap3.0', () => { | |||
| 585 | 584 | (item) => | |
| 586 | 585 | item.id === 'ms_New_LINE_1718091329989_7' && | |
| 587 | 586 | item.dataSource.type === 'REST_DATA' && | |
| 588 | - item.dataSource.url === 'http://172.16.14.44:8090/iserver/services/data-Building/rest/data' && | ||
| 587 | + item.dataSource.url.match(/\/iserver\/services\/data-Building\/rest\/data$/) && | ||
| 589 | 588 | item.dataSource.serverId === void 0 | |
| 590 | 589 | ) | |
| 591 | 590 | ).toBeTruthy(); | |
| 591 | + expect( | ||
| 592 | + appreciableLayers.some( | ||
| 593 | + (item) => | ||
| 594 | + item.renderSource.id === 'ms_M_3857_1719917169016_4' && | ||
| 595 | + item.dataSource.type === 'REST_MAP' && | ||
| 596 | + item.dataSource.url.match(/\/iserver\/services\/map-multi0508\/rest\/maps$/) && | ||
| 597 | + item.dataSource.mapName === 'M_3857' | ||
| 598 | + ) | ||
| 599 | + ).toBeTruthy(); | ||
| 592 | 600 | expect( | |
| 593 | 601 | appreciableLayers.some((item) => item.id === 'CHINA_DARK' && !Object.keys(item.dataSource).length) | |
| 594 | 602 | ).toBeTruthy(); | |
| 603 | + spyTest.calls.reset(); | ||
| 595 | 604 | done(); | |
| 596 | 605 | }); | |
| 597 | 606 | }); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -459,7 +459,8 @@ describe('L7LayerUtil', () => { | |||
| 459 | 459 | 'http://localhost:8195/portalproxy/592c4095f464540e/iserver/services/map-LinkMap/restjsr/v1/vectortile/maps/%E5%8E%BF%E7%BA%A7%E8%A1%8C%E6%94%BF%E5%8C%BA%E5%88%92%40link/tiles/{z}/{x}/{y}.mvt' | |
| 460 | 460 | ], | |
| 461 | 461 | bounds: [102.98962307000005, 30.090978575000065, 104.89626180000005, 31.437765225000078], | |
| 462 | - type: 'vector' | ||
| 462 | + type: 'vector', | ||
| 463 | + promoteId: 'spmid' | ||
| 463 | 464 | } | |
| 464 | 465 | }; | |
| 465 | 466 | const nextOptions = { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -448,6 +448,7 @@ describe('mapboxgl L7Layer', () => { | |||
| 448 | 448 | type: 'Feature', | |
| 449 | 449 | properties: { | |
| 450 | 450 | city: '北京', | |
| 451 | + spmid: 1 | ||
| 451 | 452 | }, | |
| 452 | 453 | geometry: { | |
| 453 | 454 | type: 'Point', | |
@@ -490,6 +491,11 @@ describe('mapboxgl L7Layer', () => { | |||
| 490 | 491 | layer.setSelectedDatas(geoData.features); | |
| 491 | 492 | expect(layer.selectedDatas.length).toEqual(geoData.features.length); | |
| 492 | 493 | expect(layerFilter.values('北京')).toBeFalsy(); | |
| 494 | + layer.setSelectedDatas([]); | ||
| 495 | + layer.l7layer.rawConfig.filter = ['all', ['==', '$type', 'LineString']]; | ||
| 496 | + const nextLayerFilter = layer.getFilter(); | ||
| 497 | + expect(nextLayerFilter.field).toEqual([]); | ||
| 498 | + expect(nextLayerFilter.values('1')).toBeTruthy(); | ||
| 493 | 499 | spyOn(l7Layer, 'on'); | |
| 494 | 500 | spyOn(l7Layer, 'once'); | |
| 495 | 501 | spyOn(l7Layer, 'off'); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments