Skip to content

Commit 547cf8e

Browse files
committed
【update】1)webmap修改标签图层,样式问题
2)分段专题图和单值专题图统一过滤逻辑 (reviewed by songym)
1 parent 5c4f8f3 commit 547cf8e

File tree

2 files changed

+29
-28
lines changed

2 files changed

+29
-28
lines changed

src/openlayers/core/StyleUtils.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ export class StyleUtils {
424424
return [];
425425
}
426426
var w = style.strokeWidth * widthFactor;
427-
var str = style.strokeDashstyle;
427+
var str = style.strokeDashstyle || style.lineDash;
428428
switch (str) {
429429
case 'solid':
430430
return [];
@@ -644,7 +644,7 @@ export class StyleUtils {
644644
newStroke = new ol.style.Stroke({
645645
width: strokeWidth || ZERO,
646646
color: strokeColorArray,
647-
lineCap: lineCap || 'round', //todo 缺少lineCap
647+
lineCap: lineCap || 'round',
648648
lineDash: this.dashStyle(style, 1)
649649
});
650650
olStyle.setStroke(newStroke);

src/openlayers/mapping/WebMap.js

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,7 @@ export class WebMap extends ol.Observable {
626626
}).then(function (response) {
627627
return response.json()
628628
}).then(function (data) {
629-
if(!data.succeed === false) {
629+
if(data.succeed === false) {
630630
//请求失败
631631
layerAdded++;
632632
that.sendMapToUser(layerAdded, len);
@@ -927,14 +927,7 @@ export class WebMap extends ol.Observable {
927927
* @param {array} features - 图层上的feature集合
928928
*/
929929
addLayer(layerInfo, features) {
930-
let layer, allFeatures;
931-
if (layerInfo.style && layerInfo.filterCondition) {
932-
if (layerInfo.layerType === "RANGE") {
933-
allFeatures = features;
934-
}
935-
//将feature根据过滤条件进行过滤, 分段专题图因为要计算styleGroup所以暂时不过滤
936-
features = this.getFiterFeatures(layerInfo.filterCondition, features);
937-
}
930+
let layer;
938931
if (layerInfo.layerType === "VECTOR") {
939932
if (layerInfo.featureType === "POINT") {
940933
if (layerInfo.style.type === 'SYMBOL_POINT') {
@@ -949,23 +942,23 @@ export class WebMap extends ol.Observable {
949942
} else if (layerInfo.layerType === "UNIQUE") {
950943
layer = this.createUniqueLayer(layerInfo, features);
951944
} else if (layerInfo.layerType === "RANGE") {
952-
layer = this.createRangeLayer(layerInfo, features, allFeatures);
945+
layer = this.createRangeLayer(layerInfo, features);
953946
} else if (layerInfo.layerType === "HEAT") {
954947
layer = this.createHeatLayer(layerInfo, features);
955948
} else if (layerInfo.layerType === "MARKER") {
956949
layer = this.createMarkerLayer(layerInfo, features)
957950
}
958951
let layerId = Util.newGuid(8);
959-
if (layer && layerInfo.name) {
960-
layer.setProperties({
952+
if (layer) {
953+
layerInfo.name && layer.setProperties({
961954
name: layerInfo.name,
962955
layerId: layerId
963956
});
957+
layerInfo.opacity && layer.setOpacity(layerInfo.opacity);
958+
layer.setVisible(layerInfo.visible);
964959
}
965960
layer && this.map.addLayer(layer);
966961
layerInfo.layer = layer;
967-
layerInfo.opacity && layer.setOpacity(layerInfo.opacity);
968-
layer.setVisible(layerInfo.visible);
969962
layerInfo.layerId = layerId;
970963
if (layerInfo.labelStyle && layerInfo.labelStyle.labelField) {
971964
//存在标签专题图
@@ -1181,7 +1174,7 @@ export class WebMap extends ol.Observable {
11811174
*/
11821175
addLabelLayer(layerInfo, features) {
11831176
let labelStyle = layerInfo.labelStyle;
1184-
let style = this.getLabelStyle(labelStyle);
1177+
let style = this.getLabelStyle(labelStyle, layerInfo);
11851178
let layer = new ol.layer.Vector({
11861179
declutter: true,
11871180
styleOL: style,
@@ -1211,13 +1204,22 @@ export class WebMap extends ol.Observable {
12111204
* @private
12121205
* @function ol.supermap.WebMap.prototype.getLabelStyle
12131206
* @description 获取标签样式
1214-
* @param {object} parameters - 样式参数
1207+
* @param {object} parameters - 标签图层样式参数
1208+
* @param {object} layerInfo - 图层样式参数
12151209
* @returns {ol.style.Style}
12161210
*/
1217-
getLabelStyle(parameters) {
1211+
getLabelStyle(parameters, layerInfo) {
1212+
let radius = layerInfo.style.radius || 0;
1213+
let strokeWidth = layerInfo.style.strokeWidth || 0;
1214+
let offsetY = -1.8 * radius - strokeWidth;
1215+
if (offsetY > -20) {
1216+
offsetY = -20;
1217+
}
1218+
parameters.offsetY = offsetY;
1219+
12181220
return new ol.style.Style({
12191221
text: new ol.style.Text({
1220-
font: parameters.fontSize + " " + parameters.fontFamily,
1222+
font: "14px " + parameters.fontFamily,
12211223
placement: 'point',
12221224
textAlign: 'center',
12231225
fill: new ol.style.Fill({
@@ -1227,7 +1229,7 @@ export class WebMap extends ol.Observable {
12271229
color: [255, 255, 255, 0.7]
12281230
}),
12291231
padding: [3, 3, 3, 3],
1230-
offsetY: -20
1232+
offsetY: parameters.offsetY
12311233
})
12321234
});
12331235
}
@@ -1335,14 +1337,14 @@ export class WebMap extends ol.Observable {
13351337
* @function ol.supermap.WebMap.prototype.createUniqueLayer
13361338
* @description 获取当前字段对应的最大值,用于计算权重
13371339
* @param {array} layerInfo - 图层信息
1338-
* @param {string} features - 所以feature的集合
1340+
* @param {array} features - 所有feature结合
13391341
*/
13401342
createUniqueLayer(layerInfo, features) {
13411343
let styleSource = this.createUniqueSource(layerInfo, features);
13421344
let layer = new ol.layer.Vector({
13431345
styleSource: styleSource,
13441346
source: new ol.source.Vector({
1345-
features: features,
1347+
features: layerInfo.filterCondition ? this.getFiterFeatures(layerInfo.filterCondition, features) : features,
13461348
wrapX: false
13471349
})
13481350
});
@@ -1444,17 +1446,16 @@ export class WebMap extends ol.Observable {
14441446
* @function ol.supermap.WebMap.prototype.createRangeLayer
14451447
* @description 创建分段图层
14461448
* @param {object} layerInfo- 图层信息
1447-
* @param {array} features - 通过过滤条件筛选过的feature结合
1448-
* @param {array} allFeatures- 所以的feature集合
1449+
* @param {array} features - 所有feature结合
14491450
* @returns {ol.layer.Vector}
14501451
*/
1451-
createRangeLayer(layerInfo, features, allFeatures) {
1452+
createRangeLayer(layerInfo, features) {
14521453
//这里获取styleGroup要用所以的feature
1453-
let styleSource = this.createRangeSource(layerInfo, allFeatures || features);
1454+
let styleSource = this.createRangeSource(layerInfo, features);
14541455
let layer = new ol.layer.Vector({
14551456
styleSource: styleSource,
14561457
source: new ol.source.Vector({
1457-
features: features,
1458+
features: layerInfo.filterCondition ? this.getFiterFeatures(layerInfo.filterCondition, features) : features,
14581459
wrapX: false
14591460
})
14601461
});

0 commit comments

Comments
 (0)