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)