如何在绘制OpenLayers后更新多边形矢量的标签?

时间:2012-01-17 06:58:53

标签: vector openlayers

我是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";

提前致谢。

1 个答案:

答案 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()

相关问题