2012-01-17 21 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

あなたは正しい方法です。あなたはそのような層のすべての機能に新しいラベルを設定することができます。

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の値がラベルとして表示されます。 1つのフィーチャごとにラベル値を変更するには、そのフィーチャの属性の値を変更してから、レイヤーのredraw()を呼び出します。

+0

完璧、ありがとう。この種の説明はドキュメントに入れてください! –

関連する問題