Skip to content

Commit 9237ff3

Browse files
2 parents f760540 + 3bb88bf commit 9237ff3

File tree

4 files changed

+575
-8
lines changed

4 files changed

+575
-8
lines changed

src/common/mapping/WebMapV3.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* This program are made available under the terms of the Apache License, Version 2.0
33
* which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html.*/
44
import { FetchRequest } from '../util/FetchRequest';
5-
import { getLayerInfosFromCatalogs, getMainLayerFromCatalog, isSameRasterLayer, mergeFeatures, transformUrl } from './utils/util';
5+
import { getLayerCatalogRenderLayers, getLayerInfosFromCatalogs, getMainLayerFromCatalog, isSameRasterLayer, mergeFeatures, transformUrl } from './utils/util';
66
import { SourceListModelV3 } from './utils/SourceListModelV3';
77

88
const LEGEND_RENDER_TYPE = {
@@ -504,7 +504,7 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, mapRe
504504
layer.id = layerId;
505505
}
506506
}
507-
layerIdToChange.push({ originId: originId, renderId: layer.id });
507+
layerIdToChange.push({ originId: originId, renderId: layer.id, id: originId });
508508
}
509509
const layerCatalogFromMapJson = JSON.parse(JSON.stringify(style.metadata.layerCatalog), 'parts');
510510
this._updateLayerCatalogsId({
@@ -592,7 +592,8 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, mapRe
592592
});
593593
return;
594594
}
595-
const matchLayer = layerIdMapList.find((item) => item.originId === id);
595+
const renderLayers = getLayerCatalogRenderLayers(loopItem[layerIdsField], id, layerIdMapList);
596+
const matchLayer = layerIdMapList.find((item) => item.originId === renderLayers[0]);
596597
if (matchLayer) {
597598
const catalog = this._findLayerCatalog(catalogs, id);
598599
catalog.id = matchLayer.renderId;
@@ -602,7 +603,7 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, mapRe
602603
}
603604
return;
604605
}
605-
if (unspportedLayers.includes(id)) {
606+
if (unspportedLayers.includes(id) || renderLayers.some((layerId) => unspportedLayers.includes(layerId))) {
606607
this._deleteLayerCatalog(catalogs, id);
607608
}
608609
});
@@ -1407,9 +1408,10 @@ export function createWebMapV3Extending(SuperClass, { MapManager, mapRepo, mapRe
14071408
const unSupportedMsg = 'layer are not supported yet';
14081409
const { interaction } = mapInfo;
14091410
if (interaction && interaction.drill) {
1410-
this.fire('layercreatefailed', { error: `drill ${unSupportedMsg}`, map: this.map });
1411+
this.fire('layercreatefailed', { error: `drill ${unSupportedMsg}`, map: this.map, error_code: 'DRILL_LAYERS_NOT_SUPPORTED' });
14111412
interaction.drill.forEach((drillItem) => {
1412-
filterLayerIds.push(...drillItem.layerIds);
1413+
const drillLayerIds = drillItem.layerIds || drillItem.layers.reduce((ids, item) => ids.concat(item.layerIds), []);
1414+
filterLayerIds.push(...drillLayerIds);
14131415
});
14141416
}
14151417
return filterLayerIds;

test/mapboxgl/mapping/WebMapV3Spec.js

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,8 +439,65 @@ describe('mapboxgl-webmap3.0', () => {
439439
server: server,
440440
target: 'map'
441441
});
442-
mapstudioWebmap.on('layercreatefailed', ({ error }) => {
442+
mapstudioWebmap.on('layercreatefailed', ({ error, error_code }) => {
443443
expect(['drill'].indexOf(error.split(' ')[0]) > -1).toBeTruthy();
444+
expect(error_code).toBe('DRILL_LAYERS_NOT_SUPPORTED');
445+
});
446+
mapstudioWebmap.on('mapcreatesucceeded', ({ map }) => {
447+
const style = map.getStyle();
448+
expect(style.layers.length).toBeLessThan(originMapInfo.layers.length);
449+
expect(style.layers.length).toBe(mapInfo.layers.length);
450+
expect(mapstudioWebmap.getLayers().length).toBe(1);
451+
expect(mapstudioWebmap.getLayerCatalog().length).toBe(1);
452+
done();
453+
});
454+
mapstudioWebmap.initializeMap(mapInfo);
455+
});
456+
457+
it('filter drill ui id test', (done) => {
458+
spyOn(FetchRequest, 'get').and.callFake((url) => {
459+
if (url.indexOf('/sprite') > -1) {
460+
return Promise.resolve(new Response(msSpriteInfo));
461+
}
462+
return Promise.resolve();
463+
});
464+
const mapInfo = JSON.parse(mapstudioWebMap_drill_layers1);
465+
const originMapInfo = JSON.parse(mapstudioWebMap_drill_layers1);
466+
const mapstudioWebmap = new WebMapV3(mapInfo, {
467+
server: server,
468+
target: 'map'
469+
});
470+
mapstudioWebmap.on('layercreatefailed', ({ error, error_code }) => {
471+
expect(['drill'].indexOf(error.split(' ')[0]) > -1).toBeTruthy();
472+
expect(error_code).toBe('DRILL_LAYERS_NOT_SUPPORTED');
473+
});
474+
mapstudioWebmap.on('mapcreatesucceeded', ({ map }) => {
475+
const style = map.getStyle();
476+
expect(style.layers.length).toBeLessThan(originMapInfo.layers.length);
477+
expect(style.layers.length).toBe(mapInfo.layers.length);
478+
expect(mapstudioWebmap.getLayers().length).toBe(1);
479+
expect(mapstudioWebmap.getLayerCatalog().length).toBe(1);
480+
done();
481+
});
482+
mapstudioWebmap.initializeMap(mapInfo);
483+
});
484+
485+
it('filter drill interaction changed test', (done) => {
486+
spyOn(FetchRequest, 'get').and.callFake((url) => {
487+
if (url.indexOf('/sprite') > -1) {
488+
return Promise.resolve(new Response(msSpriteInfo));
489+
}
490+
return Promise.resolve();
491+
});
492+
const mapInfo = JSON.parse(mapstudioWebMap_drill_layers2);
493+
const originMapInfo = JSON.parse(mapstudioWebMap_drill_layers2);
494+
const mapstudioWebmap = new WebMapV3(mapInfo, {
495+
server: server,
496+
target: 'map'
497+
});
498+
mapstudioWebmap.on('layercreatefailed', ({ error, error_code }) => {
499+
expect(['drill'].indexOf(error.split(' ')[0]) > -1).toBeTruthy();
500+
expect(error_code).toBe('DRILL_LAYERS_NOT_SUPPORTED');
444501
});
445502
mapstudioWebmap.on('mapcreatesucceeded', ({ map }) => {
446503
const style = map.getStyle();

test/maplibregl/mapping/WebMapV3Spec.js

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,8 +404,65 @@ describe('maplibregl-webmap3.0', () => {
404404
server: server,
405405
target: 'map'
406406
});
407-
mapstudioWebmap.on('layercreatefailed', ({ error }) => {
407+
mapstudioWebmap.on('layercreatefailed', ({ error, error_code }) => {
408408
expect(['drill'].indexOf(error.split(' ')[0]) > -1).toBeTruthy();
409+
expect(error_code).toBe('DRILL_LAYERS_NOT_SUPPORTED');
410+
});
411+
mapstudioWebmap.on('mapcreatesucceeded', ({ map }) => {
412+
const style = map.getStyle();
413+
expect(style.layers.length).toBeLessThan(originMapInfo.layers.length);
414+
expect(style.layers.length).toBe(mapInfo.layers.length);
415+
expect(mapstudioWebmap.getLayers().length).toBe(1);
416+
expect(mapstudioWebmap.getLayerCatalog().length).toBe(1);
417+
done();
418+
});
419+
mapstudioWebmap.initializeMap(mapInfo);
420+
});
421+
422+
it('filter drill ui id test', (done) => {
423+
spyOn(FetchRequest, 'get').and.callFake((url) => {
424+
if (url.indexOf('/sprite') > -1) {
425+
return Promise.resolve(new Response(msSpriteInfo));
426+
}
427+
return Promise.resolve();
428+
});
429+
const mapInfo = JSON.parse(mapstudioWebMap_drill_layers1);
430+
const originMapInfo = JSON.parse(mapstudioWebMap_drill_layers1);
431+
const mapstudioWebmap = new WebMapV3(mapInfo, {
432+
server: server,
433+
target: 'map'
434+
});
435+
mapstudioWebmap.on('layercreatefailed', ({ error, error_code }) => {
436+
expect(['drill'].indexOf(error.split(' ')[0]) > -1).toBeTruthy();
437+
expect(error_code).toBe('DRILL_LAYERS_NOT_SUPPORTED');
438+
});
439+
mapstudioWebmap.on('mapcreatesucceeded', ({ map }) => {
440+
const style = map.getStyle();
441+
expect(style.layers.length).toBeLessThan(originMapInfo.layers.length);
442+
expect(style.layers.length).toBe(mapInfo.layers.length);
443+
expect(mapstudioWebmap.getLayers().length).toBe(1);
444+
expect(mapstudioWebmap.getLayerCatalog().length).toBe(1);
445+
done();
446+
});
447+
mapstudioWebmap.initializeMap(mapInfo);
448+
});
449+
450+
it('filter drill interaction changed test', (done) => {
451+
spyOn(FetchRequest, 'get').and.callFake((url) => {
452+
if (url.indexOf('/sprite') > -1) {
453+
return Promise.resolve(new Response(msSpriteInfo));
454+
}
455+
return Promise.resolve();
456+
});
457+
const mapInfo = JSON.parse(mapstudioWebMap_drill_layers2);
458+
const originMapInfo = JSON.parse(mapstudioWebMap_drill_layers2);
459+
const mapstudioWebmap = new WebMapV3(mapInfo, {
460+
server: server,
461+
target: 'map'
462+
});
463+
mapstudioWebmap.on('layercreatefailed', ({ error, error_code }) => {
464+
expect(['drill'].indexOf(error.split(' ')[0]) > -1).toBeTruthy();
465+
expect(error_code).toBe('DRILL_LAYERS_NOT_SUPPORTED');
409466
});
410467
mapstudioWebmap.on('mapcreatesucceeded', ({ map }) => {
411468
const style = map.getStyle();

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy