Skip to content

Commit 6bb128f

Browse files
author
caoxinke
committed
fix Openlayers下矢量瓦片例子的一些bug
1 parent 609a095 commit 6bb128f

File tree

6 files changed

+33
-20
lines changed

6 files changed

+33
-20
lines changed

dist/iclient9-openlayers.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8062,9 +8062,9 @@ var SuperMap = __webpack_require__(0);
80628062
ol.supermap.StyleUtils = {
80638063
getValidStyleFromLayerInfo: function (layerInfo, feature, url) {
80648064
var type = feature.getGeometry().getType().toUpperCase(),
8065-
style = this.getDefaultStyle(type),
8066-
shader = layerInfo.layerStyle;
8067-
if ((type === "POINT" || type === 'MULTIPOINT') && !feature.getProperties().textStyle && layerInfo.type !== 'LABEL') {
8065+
shader = layerInfo.layerStyle,
8066+
style = this.getDefaultStyle(type);
8067+
if ((type === "POINT" || type === 'MULTIPOINT') && !feature.getProperties().textStyle && layerInfo.type !== 'LABEL' && !feature.getProperties().TEXT_FEATURE_CONTENT) {
80688068
if (shader) {
80698069
var symbolParameters = {
80708070
"transparent": true,
@@ -8082,11 +8082,15 @@ ol.supermap.StyleUtils = {
80828082
});
80838083
}
80848084
return this.toOLPointStyle(style);
8085-
} else if ((type === "POINT" || type === 'MULTIPOINT') && (feature.getProperties().textStyle || layerInfo.type === 'LABEL')) {
8085+
} else if ((type === "POINT" || type === 'MULTIPOINT') && (feature.getProperties().textStyle || layerInfo.type === 'LABEL' || feature.getProperties().TEXT_STYLE_INFO)) {
8086+
style = this.getDefaultStyle('TEXT');
80868087
if (feature.getProperties().textStyle) {
80878088
shader = feature.getProperties().textStyle;
80888089
}
8089-
if (shader) {
8090+
if (feature.getProperties().TEXT_STYLE_INFO) {
8091+
shader = feature.getProperties().TEXT_STYLE_INFO;
8092+
}
8093+
if (shader && shader !== "{}") {
80908094
var fontStr = "";
80918095
//设置文本是否倾斜
80928096
style.fontStyle = !!shader.italic ? "italic" : "normal";
@@ -8140,11 +8144,14 @@ ol.supermap.StyleUtils = {
81408144
if (feature.getProperties().textStyle && feature.getProperties().texts) {
81418145
text = feature.getProperties().texts[0];
81428146
}
8143-
if (layerInfo.type === 'LABEL' && feature.getProperties().attributes !== null) {
8147+
if (layerInfo.type === 'LABEL') {
81448148
text = feature.getProperties().attributes ? feature.getProperties().attributes[layerInfo.textField] : feature.getProperties()[layerInfo.textField];
81458149
}
8150+
if (feature.getProperties().TEXT_FEATURE_CONTENT) {
8151+
text = feature.getProperties().TEXT_FEATURE_CONTENT;
8152+
}
81468153
if (!text) {
8147-
return this.toOLPointStyle(style);
8154+
return this.toOLPointStyle(this.getDefaultStyle('POINT'));
81488155
}
81498156
return this.toOLTextStyle(style, text);
81508157
} else if (shader) {
@@ -8358,7 +8365,7 @@ ol.supermap.StyleUtils = {
83588365
toOLTextStyle: function (style, text) {
83598366
return new ol.style.Style({
83608367
text: new ol.style.Text({
8361-
font: style.fontStyle || '' + ' ' + style.fontWeight || '' + ' ' + style.fontSize || '' + ' ' + style.fontFamily,
8368+
font: (style.fontStyle || '') + ' ' + (style.fontWeight || '') + ' ' + (style.fontSize || '') + ' ' + style.fontFamily,
83628369
text: text,
83638370
textAlign: style.textAlign,
83648371
textBaseline: style.textBaseline,
@@ -34721,7 +34728,7 @@ ol.supermap.VectorTileStyles.getStyle = function (originalLayerName, feature) {
3472134728
var layerInfo = ol.supermap.VectorTileStyles.getLayerInfo(originalLayerName);
3472234729
if (!ol.supermap.VectorTileStyles.getDonotNeedServerCartoCss() && ol.supermap.VectorTileStyles.getCartoShaders()[layerName]) {
3472334730
//如果是文本,这里特殊处理。
34724-
if (feature.getProperties().textStyle || layerInfo.type == 'LABEL' && layerInfo.textField) {
34731+
if (feature.getProperties().textStyle || feature.getProperties().TEXT_FEATURE_CONTENT || layerInfo.type == 'LABEL' && layerInfo.textField) {
3472534732
return StyleUtils.getValidStyleFromLayerInfo(layerInfo, feature, url);
3472634733
}
3472734734
return getStyleArray(ol.supermap.VectorTileStyles.getCartoShaders()[layerName]);
67.3 KB
Loading
67.3 KB
Loading

examples/openlayers/mvtVectorLayer.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
});
2424
var stylesOptions = {
2525
url: url,
26-
view: map.getView(),
27-
donotNeedServerCartoCss: false
26+
view: map.getView()
2827
}
2928
var vectorTileStyles = new ol.supermap.VectorTileStyles(stylesOptions);
3029
var vectorTileOptions = ol.supermap.VectorTileSuperMapRest.optionsFromMapJSON(url, serviceResult.result);

src/openlayers/core/StyleUtils.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ var SuperMap = require('../../common/SuperMap');
66
ol.supermap.StyleUtils = {
77
getValidStyleFromLayerInfo: function (layerInfo, feature, url) {
88
var type = feature.getGeometry().getType().toUpperCase(),
9-
style = this.getDefaultStyle(type),
10-
shader = layerInfo.layerStyle;
11-
if ((type === "POINT" || type === 'MULTIPOINT') && !feature.getProperties().textStyle && layerInfo.type !== 'LABEL') {
9+
shader = layerInfo.layerStyle,
10+
style = this.getDefaultStyle(type);
11+
if ((type === "POINT" || type === 'MULTIPOINT') && !feature.getProperties().textStyle && layerInfo.type !== 'LABEL' && !feature.getProperties().TEXT_FEATURE_CONTENT) {
1212
if (shader) {
1313
var symbolParameters = {
1414
"transparent": true,
@@ -26,11 +26,15 @@ ol.supermap.StyleUtils = {
2626
});
2727
}
2828
return this.toOLPointStyle(style);
29-
} else if ((type === "POINT" || type === 'MULTIPOINT') && (feature.getProperties().textStyle || layerInfo.type === 'LABEL')) {
29+
} else if ((type === "POINT" || type === 'MULTIPOINT') && (feature.getProperties().textStyle || layerInfo.type === 'LABEL' || feature.getProperties().TEXT_STYLE_INFO)) {
30+
style = this.getDefaultStyle('TEXT');
3031
if (feature.getProperties().textStyle) {
3132
shader = feature.getProperties().textStyle;
3233
}
33-
if (shader) {
34+
if (feature.getProperties().TEXT_STYLE_INFO) {
35+
shader = feature.getProperties().TEXT_STYLE_INFO;
36+
}
37+
if (shader && shader !== "{}") {
3438
var fontStr = "";
3539
//设置文本是否倾斜
3640
style.fontStyle = !!shader.italic ? "italic" : "normal";
@@ -84,11 +88,14 @@ ol.supermap.StyleUtils = {
8488
if (feature.getProperties().textStyle && feature.getProperties().texts) {
8589
text = feature.getProperties().texts[0];
8690
}
87-
if (layerInfo.type === 'LABEL' && feature.getProperties().attributes !== null) {
91+
if (layerInfo.type === 'LABEL') {
8892
text = feature.getProperties().attributes ? feature.getProperties().attributes[layerInfo.textField] : feature.getProperties()[layerInfo.textField];
8993
}
94+
if (feature.getProperties().TEXT_FEATURE_CONTENT) {
95+
text = feature.getProperties().TEXT_FEATURE_CONTENT;
96+
}
9097
if (!text) {
91-
return this.toOLPointStyle(style);
98+
return this.toOLPointStyle(this.getDefaultStyle('POINT'));
9299
}
93100
return this.toOLTextStyle(style, text);
94101
} else if (shader) {
@@ -302,7 +309,7 @@ ol.supermap.StyleUtils = {
302309
toOLTextStyle: function (style, text) {
303310
return new ol.style.Style({
304311
text: new ol.style.Text({
305-
font: style.fontStyle || '' + ' ' + style.fontWeight || '' + ' ' + style.fontSize || '' + ' ' + style.fontFamily,
312+
font: (style.fontStyle || '') + ' ' + (style.fontWeight || '') + ' ' + (style.fontSize || '') + ' ' + style.fontFamily,
306313
text: text,
307314
textAlign: style.textAlign,
308315
textBaseline: style.textBaseline,

src/openlayers/overlay/vectortile/VectorTileStyles.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ ol.supermap.VectorTileStyles.getStyle = function (originalLayerName, feature) {
324324
var layerInfo = ol.supermap.VectorTileStyles.getLayerInfo(originalLayerName);
325325
if (!ol.supermap.VectorTileStyles.getDonotNeedServerCartoCss() && ol.supermap.VectorTileStyles.getCartoShaders()[layerName]) {
326326
//如果是文本,这里特殊处理。
327-
if (feature.getProperties().textStyle || layerInfo.type == 'LABEL' && layerInfo.textField) {
327+
if (feature.getProperties().textStyle || feature.getProperties().TEXT_FEATURE_CONTENT || layerInfo.type == 'LABEL' && layerInfo.textField) {
328328
return StyleUtils.getValidStyleFromLayerInfo(layerInfo, feature, url);
329329
}
330330
return getStyleArray(ol.supermap.VectorTileStyles.getCartoShaders()[layerName]);

0 commit comments

Comments
 (0)