Skip to content

Commit

Permalink
【feature】mapextend 根据 sourceId 判断 overlaylayer 优化
Browse files Browse the repository at this point in the history
  • Loading branch information
xiongjiaojiao committed Jul 24, 2024
1 parent 06e7872 commit 9a408d5
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 25 deletions.
26 changes: 9 additions & 17 deletions src/mapboxgl/core/MapExtend.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import mapboxgl from 'mapbox-gl';
import { decryptSources } from './decryptSource';
import { getServiceKey } from '@supermapgis/iclient-common/util/EncryptRequest';
import { CustomOverlayLayer } from '../overlay/Base';

/**
* @function MapExtend
Expand Down Expand Up @@ -38,34 +39,25 @@ export var MapExtend = (function () {
}

getSource(sourceId) {
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId);
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId && item instanceof CustomOverlayLayer);
if (customOverlayerLayer) {
if (customOverlayerLayer.getSource) {
return customOverlayerLayer.getSource();
}
return;
return customOverlayerLayer.getSource();
}
return originMapProto.getSource.call(this, sourceId);
}

removeSource(sourceId) {
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId);
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId && item instanceof CustomOverlayLayer);
if (customOverlayerLayer) {
if (customOverlayerLayer.removeSource) {
return customOverlayerLayer.removeSource();
}
return;
return customOverlayerLayer.removeSource();
}
return originMapProto.removeSource.call(this, sourceId);
}

isSourceLoaded(sourceId) {
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId);
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId && item instanceof CustomOverlayLayer);
if (customOverlayerLayer) {
if (customOverlayerLayer.isSourceLoaded) {
return customOverlayerLayer.isSourceLoaded();
}
return;
return customOverlayerLayer.isSourceLoaded();
}
return originMapProto.isSourceLoaded.call(this, sourceId);
}
Expand Down Expand Up @@ -284,9 +276,9 @@ export var MapExtend = (function () {
}

querySourceFeatures(sourceId, paramters) {
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId);
const customOverlayerLayer = Object.values(this.overlayLayersManager).find(item => item.sourceId === sourceId && item instanceof CustomOverlayLayer);
if (customOverlayerLayer) {
if (customOverlayerLayer.query && customOverlayerLayer.querySourceFeatures) {
if (customOverlayerLayer.query) {
return customOverlayerLayer.querySourceFeatures(paramters);
}
return;
Expand Down
26 changes: 18 additions & 8 deletions test/mapboxgl/core/MapExtendSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import cipher from 'node-forge/lib/cipher';
import { MapExtend } from '../../../src/mapboxgl/core/MapExtend';
import { decryptSources } from '../../../src/mapboxgl/core/decryptSource';
import { EncryptRequest } from '../../../src/common/util/EncryptRequest';
import { CustomOverlayLayer } from '../../../src/mapboxgl/overlay/Base';

describe('MapExtend mapboxgl', () => {
let originalTimeout, testDiv;
Expand Down Expand Up @@ -371,15 +372,24 @@ describe('MapExtend mapboxgl', () => {
for (const key in options) {
spyOn(options, key).and.callThrough();
}

class L7LayerTest extends CustomOverlayLayer {
constructor() {
const optionsData = {
id: 'l7_layer_1',
sourceId: 'l7_layer_1',
events: ['click'],
query: true,
interaction: true,
...options
};
for (const key in optionsData) {
this[key] = optionsData;
}
}
}
map.overlayLayersManager = {
l7_layer_1: {
id: 'l7_layer_1',
sourceId: 'l7_layer_1',
events: ['click'],
query: true,
interaction: true,
...options
},
l7_layer_1: new L7LayerTest(),
heatmap_1: { id: 'heatmap_1' }
};
expect(map.getSource('l7_layer_1')).not.toBeUndefined();
Expand Down

0 comments on commit 9a408d5

Please sign in to comment.