Skip to content

Commit 20635df

Browse files
committed
ISVJ-10976 支持dv非专题图层的图例 review by xiongjj
1 parent 5cca217 commit 20635df

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

src/common/mapping/WebMapV2.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,8 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa
506506
features = this.handleLayerFeatures(features, layerInfo);
507507

508508
if (layerType === 'VECTOR') {
509+
const styleGroups = this.getVectorStyleGroup(layerInfo);
510+
this._initLegendConfigInfo(layerInfo, styleGroups);
509511
if (featureType === 'POINT') {
510512
if (style.type === 'SYMBOL_POINT') {
511513
this._createSymbolLayer(layerInfo, features);
@@ -2564,11 +2566,18 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa
25642566
this._addOverlayToMap({ type: 'LINE', source, layerID, parentLayerId, layerStyle: lineStyle, minzoom, maxzoom });
25652567
}
25662568

2569+
_getThemeField(layerInfo) {
2570+
if (layerInfo.layerType === 'VECTOR') {
2571+
return ''
2572+
}
2573+
return layerInfo.layerType === 'HEAT' ? layerInfo.themeSetting.weight : layerInfo.themeSetting.themeField
2574+
}
2575+
25672576
_initLegendConfigInfo(layerInfo, style) {
25682577
const legendItem = {
25692578
layerId: layerInfo.layerID,
25702579
layerTitle: layerInfo.layerID,
2571-
themeField: layerInfo.layerType === 'HEAT' ? layerInfo.themeSetting.weight : layerInfo.themeSetting.themeField,
2580+
themeField: this._getThemeField(layerInfo),
25722581
styleGroup: style
25732582
};
25742583

@@ -2585,6 +2594,7 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa
25852594

25862595
switch (layerInfo.layerType) {
25872596
case 'UNIQUE':
2597+
case 'VECTOR':
25882598
legendItem.styleGroup = legendItem.styleGroup.map((styleGroup) => {
25892599
return {
25902600
fieldValue: styleGroup.value,

src/common/mapping/WebMapV2Base.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,16 @@ export function createWebMapV2BaseExtending(SuperClass = Events, fireField = 'tr
722722

723723
return styleGroup;
724724
}
725+
726+
getVectorStyleGroup(layerInfo) {
727+
const color = layerInfo.style.fillColor || layerInfo.style.strokeColor;
728+
const styleGroup = [{
729+
color: color,
730+
style: layerInfo.style,
731+
value: layerInfo.name
732+
}]
733+
return styleGroup;
734+
}
725735

726736
transformFeatures(features) {
727737
features &&

test/mapboxgl/mapping/WebMapV2Spec.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,29 @@ describe('mapboxgl_WebMapV2', () => {
490490
datavizWebmap.on('mapcreatesucceeded', callback);
491491
});
492492

493+
it('vectorlayer should have legends', (done) => {
494+
spyOn(FetchRequest, 'get').and.callFake((url) => {
495+
if (url.indexOf('map.json') > -1) {
496+
return Promise.resolve(new Response(JSON.stringify(vectorLayer_line)));
497+
} else if (url.indexOf('1788054202/content.json?') > -1) {
498+
return Promise.resolve(new Response(JSON.stringify(chart_content)));
499+
} else if (url.indexOf('13136933/content.json?') > -1) {
500+
return Promise.resolve(new Response(JSON.stringify(layerData_geojson['POINT_GEOJSON'])));
501+
} else if (url.indexOf('portal.json') > -1) {
502+
return Promise.resolve(new Response(JSON.stringify(iportal_serviceProxy)));
503+
} else if (url.indexOf('web/datas/1920557079/content.json') > -1) {
504+
return Promise.resolve(new Response(layerData_CSV));
505+
}
506+
return Promise.resolve(new Response(JSON.stringify({})));
507+
});
508+
datavizWebmap = new WebMap(id, { ...commonOption, map: commonMap }, { ...commonMapOptions });
509+
const callback = function (data) {
510+
expect(datavizWebmap.getLegends().length).toBe(1);
511+
done();
512+
};
513+
datavizWebmap.on('mapcreatesucceeded', callback);
514+
});
515+
493516
it('add heatLayer', (done) => {
494517
spyOn(FetchRequest, 'get').and.callFake((url) => {
495518
if (url.indexOf('web/datas/1920557079/content.json') > -1) {

0 commit comments

Comments
 (0)