2012-01-17 78 views
1

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

在此先感謝。

回答

3

你是對的。正如你看到它調用redraw()方法設置新值後,是很重要的

polygonLayer.styleMap.styles.default.defaultStyle.label = "new label"; 
polygonLayer.redraw(); 

:您可以在這樣的層中的所有功能設置新的標籤。

這就是您如何更改圖層中所有要素的標籤。很多時候,您需要爲每個功能設置新的標籤。要創建pollygonLayer,您應該遵循以下步驟:

var style = $.extend(true, {}, OpenLayers.Feature.Vector.style['default']); 
style.label = "${feature_name}"; 

每個功能都有一組屬性。在這種情況下,屬性feature_name的值將顯示爲標籤。要更改每個功能的標籤值,只需更改該功能上的屬性值,然後在層上調用redraw()即可。

+0

完美,非常感謝。這種解釋應該進入文檔! – 2012-01-18 08:52:56