1

Openlayers マップに「N」個のマーカーがあり、これらのマーカーに「ラベルを付ける」必要があります (意味: テキストを配置する)。いくつかの方法を試しましたが、まだ必要なものを達成できませんでした。

私のJSコードスニペット(コードから無関係なものをいくつか削除しました):

function getWeatherInfo(){
if(wheatherOfCitiesMarkerLayer == null){
    wheatherOfCitiesMarkerLayer = new OpenLayers.Layer.Markers("WeatherMarkerLayer");
    map.addLayer(wheatherOfCitiesMarkerLayer);
}

$.getJSON(qryPointResultListForAllCities(),  function(data) {   
    if(data!= null){
        var size = new OpenLayers.Size(60,45);
        var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);

        for(var i = 0; i < data.pr.length; i ++){   

            // Create markers by using the returned data from the server
            //...
            //... Removed some irrevelant stuff

            var lat = data.pr[i].la;
            var lon = data.pr[i].lo;
            var infos = data.pr[i].info.infos;
            var infop = data.pr[i].info.infop;
            var infocc = data.pr[i].info.infocc;

            var icon = new OpenLayers.Icon('my_marker_img.png',size,offset);

            location = new OpenLayers.LonLat(lon, lat);
            location = transformFromWGS1984ToSphericalMercator(location.clone());
            marker = new OpenLayers.Marker(location,icon.clone());

            wheatherOfCitiesMarkerLayer.addMarker(marker);

        }

    }

}

}

私がする必要があるのは、マップ上の各マーカーにラベルまたはテキストを配置することです。

4

2 に答える 2

1

とにかくサーバーからマーカー データを取得しているので、できることは、定義されたラベル クラスだけを使用してマップ ファイルにレイヤーを作成し、それをマーカー レイヤーにオーバーレイとして追加することです。

お役に立てれば。

于 2013-05-15T09:50:49.493 に答える
-1

マーカーにテキスト (またはラベル) を追加する代わりに、マーカーをラベルに追加できます。

locationこれを行うには、 、titledescriptionおよびパスを使用して新しいテキスト ファイルを作成しますicon(必須ではありません。何も設定されていない場合はデフォルトが使用されます)。たとえば、地図上に2 つのマーカーを配置する場合、テキスト ファイルは次のようになります。

point  title              description            icon
10,99  An labeled marker  with default image     
12,34  Another marker     This is my label text  http://example.com/marker.png

名前とパラメーターの間には、スペースではなくタブが必要であることに注意してください。2 行目の最後には、アイコンが指定されていないタブもあります。

このファイルをサイトのどこかに保存し、レイヤーが初期化される場所にこのコードを配置します。

var textl = new OpenLayers.Layer.Text("text", {location : "data_dile.txt"});
map.addLayer(textl);

テキスト ファイルは、PHP などのサーバー側言語を使用して動的に作成できます。

ここにオンラインのがあります。

于 2013-05-15T09:51:35.887 に答える