Skip to content

Commit 6862b20

Browse files
committed
ISVJ-10976 支持dv非专题图层的图例 review by xiongjj
1 parent e823cfa commit 6862b20

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
@@ -524,6 +524,8 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, DataF
524524
features = this.handleLayerFeatures(features, layerInfo);
525525

526526
if (layerType === 'VECTOR') {
527+
const styleGroups = this.getVectorStyleGroup(layerInfo);
528+
this._initLegendConfigInfo(layerInfo, styleGroups);
527529
if (featureType === 'POINT') {
528530
if (style.type === 'SYMBOL_POINT') {
529531
this._createSymbolLayer(layerInfo, features);
@@ -2522,11 +2524,18 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, DataF
25222524
this._addOverlayToMap({ type: 'LINE', source, layerID, parentLayerId, layerStyle: lineStyle, minzoom, maxzoom });
25232525
}
25242526

2527+
_getThemeField(layerInfo) {
2528+
if (layerInfo.layerType === 'VECTOR') {
2529+
return ''
2530+
}
2531+
return layerInfo.layerType === 'HEAT' ? layerInfo.themeSetting.weight : layerInfo.themeSetting.themeField
2532+
}
2533+
25252534
_initLegendConfigInfo(layerInfo, style) {
25262535
const legendItem = {
25272536
layerId: layerInfo.layerID,
25282537
layerTitle: layerInfo.layerID,
2529-
themeField: layerInfo.layerType === 'HEAT' ? layerInfo.themeSetting.weight : layerInfo.themeSetting.themeField,
2538+
themeField: this._getThemeField(layerInfo),
25302539
styleGroup: style
25312540
};
25322541

@@ -2543,6 +2552,7 @@ export function createWebMapV2Extending(SuperClass, { MapManager, mapRepo, DataF
25432552

25442553
switch (layerInfo.layerType) {
25452554
case 'UNIQUE':
2555+
case 'VECTOR':
25462556
legendItem.styleGroup = legendItem.styleGroup.map((styleGroup) => {
25472557
return {
25482558
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
@@ -519,6 +519,29 @@ describe('mapboxgl_WebMapV2', () => {
519519
datavizWebmap.on('mapcreatesucceeded', callback);
520520
});
521521

522+
it('vectorlayer should have legends', (done) => {
523+
spyOn(FetchRequest, 'get').and.callFake((url) => {
524+
if (url.indexOf('map.json') > -1) {
525+
return Promise.resolve(new Response(JSON.stringify(vectorLayer_line)));
526+
} else if (url.indexOf('1788054202/content.json?') > -1) {
527+
return Promise.resolve(new Response(JSON.stringify(chart_content)));
528+
} else if (url.indexOf('13136933/content.json?') > -1) {
529+
return Promise.resolve(new Response(JSON.stringify(layerData_geojson['POINT_GEOJSON'])));
530+
} else if (url.indexOf('portal.json') > -1) {
531+
return Promise.resolve(new Response(JSON.stringify(iportal_serviceProxy)));
532+
} else if (url.indexOf('web/datas/1920557079/content.json') > -1) {
533+
return Promise.resolve(new Response(layerData_CSV));
534+
}
535+
return Promise.resolve(new Response(JSON.stringify({})));
536+
});
537+
datavizWebmap = new WebMap(id, { ...commonOption, map: commonMap }, { ...commonMapOptions });
538+
const callback = function (data) {
539+
expect(datavizWebmap.getLegends().length).toBe(1);
540+
done();
541+
};
542+
datavizWebmap.on('mapcreatesucceeded', callback);
543+
});
544+
522545
it('add heatLayer', (done) => {
523546
spyOn(FetchRequest, 'get').and.callFake((url) => {
524547
if (url.indexOf('web/datas/1920557079/content.json') > -1) {

0 commit comments

Comments
 (0)