Skip to content

Commit cfdacf6

Browse files
committed
ISVJ-10976 支持dv非专题图层的图例 review by xiongjj
1 parent 327d0c5 commit cfdacf6

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
@@ -575,6 +575,8 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa
575575
features = this.handleLayerFeatures(features, layerInfo);
576576

577577
if (layerType === 'VECTOR') {
578+
const styleGroups = this.getVectorStyleGroup(layerInfo);
579+
this._initLegendConfigInfo(layerInfo, styleGroups);
578580
if (featureType === 'POINT') {
579581
if (style.type === 'SYMBOL_POINT') {
580582
this._createSymbolLayer(layerInfo, features);
@@ -2633,11 +2635,18 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa
26332635
this._addOverlayToMap({ type: 'LINE', source, layerID, parentLayerId, layerStyle: lineStyle, minzoom, maxzoom });
26342636
}
26352637

2638+
_getThemeField(layerInfo) {
2639+
if (layerInfo.layerType === 'VECTOR') {
2640+
return ''
2641+
}
2642+
return layerInfo.layerType === 'HEAT' ? layerInfo.themeSetting.weight : layerInfo.themeSetting.themeField
2643+
}
2644+
26362645
_initLegendConfigInfo(layerInfo, style) {
26372646
const legendItem = {
26382647
layerId: layerInfo.layerID,
26392648
layerTitle: layerInfo.layerID,
2640-
themeField: layerInfo.layerType === 'HEAT' ? layerInfo.themeSetting.weight : layerInfo.themeSetting.themeField,
2649+
themeField: this._getThemeField(layerInfo),
26412650
styleGroup: style
26422651
};
26432652

@@ -2654,6 +2663,7 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, crsMa
26542663

26552664
switch (layerInfo.layerType) {
26562665
case 'UNIQUE':
2666+
case 'VECTOR':
26572667
legendItem.styleGroup = legendItem.styleGroup.map((styleGroup) => {
26582668
return {
26592669
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)