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)
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