使用OL3,我动态地在文本上设置文本:
var myLayer = new ol.layer.Vector({
source: mySource,
style: function (feature, resolution) {
var style = new ol.style.Style({
text: new ol.style.Text({
text: setText(feature)
})
});
return [style];
}
});
我想稍后阅读文本中存储的内容:
text: setText(feature)
我正在尝试检索单击事件上的文本,但不确定如何在要素样式下访问该属性(要素是包含所单击要素的事件中的变量):
// Get current display text
var currentFeatureStyle = feature.getStyle();
但是当我这样做时,我得到一个null currentFeatureStyle。
还尝试循环浏览功能:
for (var fid in feature)
{
//what to look for to extract the feature text?
但不确定要提取要素文本的内容。任何从功能中取回功能文本的帮助都将不胜感激。
由于
答案 0 :(得分:0)
如果有人能够提出更正确的答案,请务必在下面发布。我创建了一个"解决方法"因为我无法从功能中检索文本。解决方法涉及以下内容:
在方法内部最初设置文本,添加以下内容:
function setText(feature)
{
// First do your normal stuff (set the text of the feature)
var output = "myFeatureText";
// Here is the workaround step 1:
// Create a property and set it to the text
feature.displayText = output;
// Return back value for the setting of the style text
return output;
}
现在,文本也保存在名为displayText的属性中。注意:displayText是一个组合属性,它在openlayers中不存在。
第2步是检索您在步骤1中创建的属性以获取显示文本。在这个例子中,我们从singleclick中检索该功能,但它可以来自您正在使用该功能的任何其他地方:
map.on('singleclick', function (evt) {
var feature = map.forEachFeatureAtPixel(evt.pixel,
function (feature, layer) {
return feature;
});
// Here is the workaround step 2:
// Get "display text" custom field for this feature
var displayText = feature.displayText;
这就是它的全部内容。必须有一个正确的"从功能的样式中检索文本的方法,但我不知道它。如果有人知道如何发布你的答案。