Skip to content

Commit 9a408d5

Browse files
committed
【feature】mapextend 根据 sourceId 判断 overlaylayer 优化
1 parent 06e7872 commit 9a408d5

File tree

2 files changed

+27
-25
lines changed

2 files changed

+27
-25
lines changed

src/mapboxgl/core/MapExtend.js

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import mapboxgl from 'mapbox-gl';
55
import { decryptSources } from './decryptSource';
66
import { getServiceKey } from '@supermapgis/iclient-common/util/EncryptRequest';
7+
import { CustomOverlayLayer } from '../overlay/Base';
78

89
/**
910
* @function MapExtend
@@ -38,34 +39,25 @@ export var MapExtend = (function () {
3839
}
3940

4041
getSource(sourceId) {
41-
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId);
42+
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId && item instanceof CustomOverlayLayer);
4243
if (customOverlayerLayer) {
43-
if (customOverlayerLayer.getSource) {
44-
return customOverlayerLayer.getSource();
45-
}
46-
return;
44+
return customOverlayerLayer.getSource();
4745
}
4846
return originMapProto.getSource.call(this, sourceId);
4947
}
5048

5149
removeSource(sourceId) {
52-
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId);
50+
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId && item instanceof CustomOverlayLayer);
5351
if (customOverlayerLayer) {
54-
if (customOverlayerLayer.removeSource) {
55-
return customOverlayerLayer.removeSource();
56-
}
57-
return;
52+
return customOverlayerLayer.removeSource();
5853
}
5954
return originMapProto.removeSource.call(this, sourceId);
6055
}
6156

6257
isSourceLoaded(sourceId) {
63-
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId);
58+
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId && item instanceof CustomOverlayLayer);
6459
if (customOverlayerLayer) {
65-
if (customOverlayerLayer.isSourceLoaded) {
66-
return customOverlayerLayer.isSourceLoaded();
67-
}
68-
return;
60+
return customOverlayerLayer.isSourceLoaded();
6961
}
7062
return originMapProto.isSourceLoaded.call(this, sourceId);
7163
}
@@ -284,9 +276,9 @@ export var MapExtend = (function () {
284276
}
285277

286278
querySourceFeatures(sourceId, paramters) {
287-
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId);
279+
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId && item instanceof CustomOverlayLayer);
288280
if (customOverlayerLayer) {
289-
if (customOverlayerLayer.query && customOverlayerLayer.querySourceFeatures) {
281+
if (customOverlayerLayer.query) {
290282
return customOverlayerLayer.querySourceFeatures(paramters);
291283
}
292284
return;

test/mapboxgl/core/MapExtendSpec.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import cipher from 'node-forge/lib/cipher';
55
import { MapExtend } from '../../../src/mapboxgl/core/MapExtend';
66
import { decryptSources } from '../../../src/mapboxgl/core/decryptSource';
77
import { EncryptRequest } from '../../../src/common/util/EncryptRequest';
8+
import { CustomOverlayLayer } from '../../../src/mapboxgl/overlay/Base';
89

910
describe('MapExtend mapboxgl', () => {
1011
let originalTimeout, testDiv;
@@ -371,15 +372,24 @@ describe('MapExtend mapboxgl', () => {
371372
for (const key in options) {
372373
spyOn(options, key).and.callThrough();
373374
}
375+
376+
class L7LayerTest extends CustomOverlayLayer {
377+
constructor() {
378+
const optionsData = {
379+
id: 'l7_layer_1',
380+
sourceId: 'l7_layer_1',
381+
events: ['click'],
382+
query: true,
383+
interaction: true,
384+
...options
385+
};
386+
for (const key in optionsData) {
387+
this[key] = optionsData;
388+
}
389+
}
390+
}
374391
map.overlayLayersManager = {
375-
l7_layer_1: {
376-
id: 'l7_layer_1',
377-
sourceId: 'l7_layer_1',
378-
events: ['click'],
379-
query: true,
380-
interaction: true,
381-
...options
382-
},
392+
l7_layer_1: new L7LayerTest(),
383393
heatmap_1: { id: 'heatmap_1' }
384394
};
385395
expect(map.getSource('l7_layer_1')).not.toBeUndefined();

0 commit comments

Comments
 (0)