在选择时将wfs属性显示为标签
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在选择时将wfs属性显示为标签相关的知识,希望对你有一定的参考价值。
我试图在我的openlayer3应用程序中显示来自geoserver的wfs gml图层的属性作为标签。我成功将标签作为文本但无法访问特定属性“名称”。鉴于我正在使用的代码。
var sourceWFS = new ol.source.Vector({
loader: function (extent) {
$.ajax('..../geoserver/harry/ows?', {
type: 'GET',
data: {
service: 'WFS',
version: '1.1.0',
request: 'GetFeature',
typename: 'ABC',
srsname: 'EPSG:3857',
geometryField:'geometry',
bbox: extent.join(',') + ',EPSG:3857'
}
}).done(function (response) {
sourceWFS.addFeatures(formatWFS.readFeatures(response));
});
},
strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ()),
strategy: ol.loadingstrategy.bbox,
projection: 'EPSG:3857',
});
var layerWFS = new ol.layer.Vector({
source: sourceWFS
});
var interaction;
var interactionSelectPointerMove = new ol.interaction.Select({
condition: ol.events.condition.pointerMove
});
var interactionSelect = new ol.interaction.Select({
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'rgba(255,0,0,1.0)',
width: 1
}),
fill: new ol.style.Fill({
color: 'rgba(255,0,0,0.5)'
}),
text: new ol.style.Text({
text:("abcd")
})
})
});
var interactionSnap = new ol.interaction.Snap({
source: layerWFS.getSource()
});
我正在选择abcd
作为标签
答案
您需要一个样式函数来设置样式中的文本,而不是您希望显示的任何要素属性
var selectStyle = new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'rgba(255,0,0,1.0)',
width: 1
}),
fill: new ol.style.Fill({
color: 'rgba(255,0,0,0.5)'
}),
text: new ol.style.Text({
text:("abcd")
})
});
var interactionSelect = new ol.interaction.Select({
style: function(feature) {
selectStyle.getText().setText(feature.get('name'));
return selectStyle;
}
});
另一答案
默认情况下,您不会获得任何被GML属性“隐藏”的属性。最常见的“缺失”属性是name和id。您可以通过检查WFS服务页面中的Override GML Attributes
来了解客户端请求的GML版本,从而转换此(标准符合)行为。
另一答案
你实际显示的是“abcd”字符串本身而不是“abcd”属性的值。要访问ol.Style
中的某些要素属性值,您必须使用StyleFunction
,如下所示:
style: function(feature, resolution){
return new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'rgba(255,0,0,1.0)',
width: 1
}),
fill: new ol.style.Fill({
color: 'rgba(255,0,0,0.5)'
}),
text: new ol.style.Text({
text: feature.get("abcd");
})
})
}
以上是关于在选择时将wfs属性显示为标签的主要内容,如果未能解决你的问题,请参考以下文章
在tablayout viewpager中运行调整选项卡片段