Skip to content

Commit db15203

Browse files
[fix]webmap追加数据不对
1 parent d2804b7 commit db15203

File tree

2 files changed

+42
-9
lines changed

2 files changed

+42
-9
lines changed

src/common/mapping/WebMapV2.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo }) {
473473
}
474474
}
475475

476-
_initOverlayLayer(layerInfo, features = [], mergeByField) {
476+
_initOverlayLayer(layerInfo, features = [], mergeByField, featureProjection) {
477477
const { layerID, layerType, visible, style, featureType, projection } = layerInfo;
478478
layerInfo.visible = visible ? 'visible' : 'none';
479479
features = mergeFeatures({ sourceId: layerID, features, mergeByField, map: this.map });
@@ -491,10 +491,11 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo }) {
491491
if (features && features[0] && features[0].geometry && features[0].geometry.type === 'Polygon') {
492492
features = this._handleMultyPolygon(features);
493493
}
494+
const realProjection = featureProjection || projection;
494495
if (
495496
features &&
496-
projection &&
497-
projection !== 'EPSG:4326' &&
497+
realProjection &&
498+
realProjection !== 'EPSG:4326' &&
498499
layerInfo.dataSource &&
499500
layerInfo.dataSource.type !== 'REST_DATA'
500501
) {
@@ -2979,12 +2980,12 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo }) {
29792980
this.map.triggerRepaint();
29802981
}
29812982

2982-
updateOverlayLayer(layerInfo, features, mergeByField) {
2983+
updateOverlayLayer(layerInfo, features, mergeByField, featureProjection) {
29832984
const originLayerInfo = this._mapInfo.layers.find((layer) => {
29842985
return layer.layerID === layerInfo.id;
29852986
});
29862987
if (features) {
2987-
this._initOverlayLayer(originLayerInfo, features, mergeByField);
2988+
this._initOverlayLayer(originLayerInfo, features, mergeByField, featureProjection);
29882989
} else {
29892990
const type = this.webMapService.getDatasourceType(originLayerInfo);
29902991
this.getLayerFeatures(originLayerInfo, this._taskID, type);

test/mapboxgl/mapping/WebMapV2Spec.js

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,6 +1414,38 @@ describe('mapboxgl_WebMapV2', () => {
14141414
datavizWebmap.on('mapcreatesucceeded', callback);
14151415
});
14161416

1417+
it('updateOverlayLayer featureProjection', (done) => {
1418+
spyOn(FetchRequest, 'get').and.callFake((url) => {
1419+
if (url.indexOf('portal.json') > -1) {
1420+
return Promise.resolve(new Response(JSON.stringify(iportal_serviceProxy)));
1421+
} else if (url.indexOf('1788054202/map.json') > -1) {
1422+
return Promise.resolve(new Response(JSON.stringify(uniqueLayer_polygon)));
1423+
} else if (url.indexOf('datas/1960447494/content.json') > -1) {
1424+
return Promise.resolve(new Response(layerData_CSV));
1425+
} else if (url.indexOf('datas/144371940/content.json')) {
1426+
return Promise.resolve(new Response(JSON.stringify(layerData_geojson['LINE_GEOJSON'])));
1427+
}
1428+
});
1429+
datavizWebmap = new WebMap(id, { ...commonOption, map: commonMap }, { ...commonMapOptions });
1430+
1431+
const callback = function (data) {
1432+
const spy = spyOn(datavizWebmap._handler, 'transformFeatures').and.callThrough();
1433+
datavizWebmap.updateOverlayLayer(
1434+
{ id: 'test', projection: 'EPSG:3857' },
1435+
{
1436+
type: 'FeatureCollection',
1437+
features: [{ type: 'Feature', geometry: { type: 'Point', coordinates: [110, 10] } }]
1438+
},
1439+
'',
1440+
'EPSG:4326'
1441+
);
1442+
expect(spy).not.toHaveBeenCalled();
1443+
done();
1444+
};
1445+
datavizWebmap.on('mapcreatesucceeded', callback);
1446+
done();
1447+
});
1448+
14171449
it('updateOverlayLayer unique', (done) => {
14181450
spyOn(FetchRequest, 'get').and.callFake((url) => {
14191451
if (url.indexOf('portal.json') > -1) {
@@ -2983,7 +3015,7 @@ describe('mapboxgl_WebMapV2', () => {
29833015
minzoom: 0
29843016
});
29853017
return Promise.resolve(new Response(JSON.stringify(nextStyleJSON)));
2986-
}
3018+
}
29873019
if (url.indexOf('China.json') > -1) {
29883020
return Promise.resolve(new Response(JSON.stringify({})));
29893021
}
@@ -3169,11 +3201,11 @@ describe('mapboxgl_WebMapV2', () => {
31693201
let style = map.getStyle();
31703202
expect(style.layers.length).toBeGreaterThan(layers.length);
31713203
const sourceIds = Object.keys(style.sources);
3172-
const layerIds = style.layers.map(item => item.id);
3204+
const layerIds = style.layers.map((item) => item.id);
31733205
webMap1.cleanLayers();
31743206
style = map.getStyle();
3175-
expect(style.layers.some(layer => layerIds.some(id => id === layer.id))).toBeFalsy();
3176-
expect(Object.keys(style.sources).some(sourceId => sourceIds.some(id => id === sourceId))).toBeFalsy();
3207+
expect(style.layers.some((layer) => layerIds.some((id) => id === layer.id))).toBeFalsy();
3208+
expect(Object.keys(style.sources).some((sourceId) => sourceIds.some((id) => id === sourceId))).toBeFalsy();
31773209
const webMap2 = new WebMap(106007908, { server, map: firstMap });
31783210
webMap2.once('mapcreatesucceeded', ({ layers }) => {
31793211
expect(layers.length).toBe(2);

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