4

Openlayers のレイヤーに文字列/文字を描画しようとしています (たとえば、ルートを表示する --> ルートの近くに説明またはフロア番号を描画します)。問題: ラベルを Openlayers.Vector に追加することは可能ですが、私のアプリケーションには複数のジオメトリを持つ 1 つのベクターがあり、それぞれ異なる文字列でレンダリングする必要があります。次のようなジオメトリが存在する可能性があります: layer.addFeature(new Openlayers.StringGeometry("text", x,y) など。何も見つかりませんでした。

誰かが私にヒントを与えることができますか?

4

1 に答える 1

10

ベクターレイヤーの機能にカスタムテキストラベルを追加するには、次のことをお勧めします。

1)ベクターレイヤーに次のように追加StyleMapします。

var vectorLayer = new OpenLayers.Layer.Vector("Vector", 
{
    styleMap: new OpenLayers.StyleMap(            
    {
        label : "${labelText}",                    
        fontColor: "blue",
        fontSize: "12px",
        fontFamily: "Courier New, monospace",
        fontWeight: "bold",
        labelAlign: "lc",
        labelXOffset: "14",
        labelYOffset: "0",
        labelOutlineColor: "white",
        labelOutlineWidth: 3
    })
});

labelTextこのスタイル マップでは、このラベルのテキストが対応する地物の属性から取得されることを示していることに注意してください。

2) レイヤーに追加する地物ごとに、labelText定義した属性を指定します。

var features = [];
var pt = new OpenLayers.Geometry.Point(0, 0);
features.push(new OpenLayers.Feature.Vector(pt, {labelText: "This is my label"}));
vectorLayer.addFeatures(features);

このソリューションの唯一の制限は、ポイントごとに機能を追加する必要があり、使用できないことOpenLayers.Geometry.MultiPointです。

于 2013-07-17T08:22:45.967 に答える