Skip to content

Commit 03c1389

Browse files
committed
fix 图层管理添加地图无法取消的问题 review by xiongjj
1 parent 1c6eb93 commit 03c1389

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,8 @@ export class WebMap extends mapboxgl.Evented {
455455
}
456456

457457
_updateLayerCatalogsId({ loopData, catalogs, layerIdMapList, catalogTypeField = 'type', layerIdsField = 'parts', unspportedLayers }) {
458-
loopData.forEach((catalog) => {
458+
loopData.forEach((loopItem) => {
459+
const catalog = catalogs.find(item => item.id === loopItem.id);
459460
const { id, children } = catalog;
460461
if (catalog[catalogTypeField] === 'group') {
461462
this._updateLayerCatalogsId({
@@ -549,7 +550,7 @@ export class WebMap extends mapboxgl.Evented {
549550
delete layer['source-layer'];
550551
}
551552
return layer;
552-
});
553+
}).filter(item => this.map.getLayer(item.id));
553554
if (this._appendLayers) {
554555
return selfLayers;
555556
}
@@ -682,7 +683,7 @@ export class WebMap extends mapboxgl.Evented {
682683
}, []);
683684
const allLayersOnMap = this._getLayersOnMap();
684685
const extraLayers = allLayersOnMap.filter((layer) => !layerIdsFromCatalog.some((id) => id === layer.id));
685-
const layerCatalogs = layerCatalog.concat(extraLayers);
686+
const layerCatalogs = layerCatalog.concat(extraLayers).filter(item => this.map.getLayer(item.id));
686687
const appreciableLayers = this.getAppreciableLayers();
687688
const formatLayerCatalog = this._createFormatCatalogs(layerCatalogs, appreciableLayers);
688689
return formatLayerCatalog;

test/mapboxgl/mapping/WebMapV3Spec.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,4 +668,42 @@ describe('mapboxgl-webmap3.0', () => {
668668
done();
669669
});
670670
});
671+
672+
it('layercatalog order in layerManerger', (done) => {
673+
spyOn(FetchRequest, 'get').and.callFake((url) => {
674+
if (url.indexOf('/sprite') > -1) {
675+
return Promise.resolve(new Response(msSpriteInfo));
676+
}
677+
return Promise.resolve();
678+
});
679+
const mapInfo = JSON.parse(mapstudioWebMap_symbol);
680+
mapstudioWebmap = new WebMapV3(mapInfo, {
681+
server: server,
682+
target: 'map'
683+
});
684+
mapstudioWebmap.initializeMap(mapInfo);
685+
686+
mapstudioWebmap.on('addlayerssucceeded', ({ map }) => {
687+
const layerCatalogs = mapstudioWebmap.getLayerCatalog();
688+
map.addSource('testsource', {
689+
type: 'geojson',
690+
data: {
691+
type: 'FeatureCollection',
692+
features: []
693+
}
694+
});
695+
map.addLayer({
696+
metadata: {},
697+
paint: {
698+
'circle-color': '#f75564'
699+
},
700+
id: 'testlayer',
701+
source: 'testsource',
702+
type: 'circle'
703+
});
704+
expect(mapstudioWebmap.getLayerCatalog().length).toBe(layerCatalogs.length + 1);
705+
expect(mapstudioWebmap.getLayerCatalog()[layerCatalogs.length].id).toBe('testlayer');
706+
done();
707+
});
708+
});
671709
});

0 commit comments

Comments
 (0)