我是OpenLayers的新手。现在,我有一个带有一些样式的多边形矢量和一个标签。
var style = $.extend(true, {}, OpenLayers.Feature.Vector.style['default']);
style.pointRadius = 15;
style.label = "My Polygon";
style.fillColor = #f00;
style.strokeColor = #000;
var styleMap = new OpenLayers.StyleMap({"default" : style});
var polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer", {styleMap: styleMap});
在进行一些处理后的某个时刻,我想将结果显示为标签。我该如何更新标签?我认为它会是这样的,但这不是那样的。
polygonLayer.options.styleMap.styles.label = "Updated label";
提前致谢。
答案 0 :(得分:3)
你是正确的方式。您可以为图层中的所有要素设置新标签:
polygonLayer.styleMap.styles.default.defaultStyle.label = "new label";
polygonLayer.redraw();
如您所知,设置新值后调用redraw()
方法非常重要。
如何更改图层中所有要素的标签。通常,您需要为每个功能设置新标签。要实现这一点,您应该在创建pollygonLayer时执行以下操作:
var style = $.extend(true, {}, OpenLayers.Feature.Vector.style['default']);
style.label = "${feature_name}";
每个功能都有一组属性。在这种情况下,属性feature_name
的值将显示为标签。要更改每个功能的标签值,您只需更改该功能的属性值,然后在图层上调用redraw()
。