Skip to content

Commit 8f9a6a5

Browse files
committed
[fix] 过滤掉高亮图层 review by xiongjj
1 parent 7c97c8a commit 8f9a6a5

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

src/mapboxgl/mapping/webmap/v3/WebMap.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,15 @@ export class WebMap extends mapboxgl.Evented {
397397
}
398398
}
399399

400+
excludeSource(key) {
401+
for (let i = 0; i < this.excludeSourceNames.length; i++) {
402+
if (key && key.indexOf(this.excludeSourceNames[i]) >= 0) {
403+
return false;
404+
}
405+
}
406+
return true;
407+
}
408+
400409
_getLayersOnMap() {
401410
const layersOnMap = this.map.getStyle().layers.map((layer) => this.map.getLayer(layer.id));
402411
const overlayLayers = Object.values(this.map.overlayLayersManager).reduce((layers, overlayLayer) => {
@@ -421,7 +430,8 @@ export class WebMap extends mapboxgl.Evented {
421430
const allLayersOnMap = layersOnMap
422431
.concat(overlayLayers)
423432
.filter((layer) => !this._appendLayers || this._layerIdRenameMapList.some((item) => item.renderId === layer.id))
424-
.filter((layer) => !this.excludeSourceNames.includes(layer.source));
433+
.filter((layer) => this.excludeSource(layer.source))
434+
.filter((layer) => !layer.id.includes('-SM-'));
425435
return allLayersOnMap;
426436
}
427437

test/mapboxgl/mapping/WebMapV3Spec.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,4 +303,57 @@ describe('mapboxgl-webmap3.0', () => {
303303
});
304304
mapstudioWebmap.initializeMap(mapInfo);
305305
});
306+
307+
it('exclude source and layer', (done) => {
308+
spyOn(FetchRequest, 'get').and.callFake((url) => {
309+
if (url.indexOf('/sprite') > -1) {
310+
return Promise.resolve(new Response(msSpriteInfo));
311+
}
312+
return Promise.resolve();
313+
});
314+
const mapInfo = JSON.parse(mapstudioWebMap_symbol);
315+
mapstudioWebmap = new WebMapV3(mapInfo, {
316+
server: server,
317+
target: 'map'
318+
});
319+
mapstudioWebmap.initializeMap(mapInfo);
320+
321+
mapstudioWebmap.on('addlayerssucceeded', ({ map }) => {
322+
expect(map).not.toBeUndefined();
323+
expect(mapstudioWebmap.map).toEqual(map);
324+
const style = map.getStyle();
325+
expect(style.layers.length).toBe(mapInfo.layers.length);
326+
const appreciableLayers = mapstudioWebmap.getAppreciableLayers();
327+
const layerCatalogs = mapstudioWebmap.getLayerCatalog();
328+
expect(appreciableLayers.length).toBeGreaterThanOrEqual(mapInfo.layers.length);
329+
expect(layerCatalogs.length).toBeLessThanOrEqual(appreciableLayers.length);
330+
map.addLayer({
331+
metadata: {},
332+
paint: {
333+
'background-color': '#242424'
334+
},
335+
id: 'layer-identify-SM-highlighted',
336+
type: 'background'
337+
});
338+
map.addSource('mapbox-gl-draw-hot', {
339+
type: 'geojson',
340+
data: {
341+
type: 'FeatureCollection',
342+
features: []
343+
}
344+
});
345+
map.addLayer({
346+
metadata: {},
347+
paint: {
348+
'circle-color': "#f75564"
349+
},
350+
id: 'draw-vertex-active.hot',
351+
source: 'mapbox-gl-draw-hot',
352+
type: 'circle'
353+
});
354+
expect(mapstudioWebmap.getAppreciableLayers().length).toBe(appreciableLayers.length);
355+
expect(mapstudioWebmap.getLayerCatalog().length).toBe(layerCatalogs.length);
356+
done();
357+
});
358+
});
306359
});

0 commit comments

Comments
 (0)