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

您可以将标记添加到标签,而不是将文本(或标签)添加到标记。

这是通过创建一个带有 、 和路径的新文本文件locationtitle完成descriptionicon(不是必需的,如果没有设置,它将使用默认值)。例如,如果您想在地图上放置两个标记,则文本文件可能如下所示

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

请注意,名称和参数之间应该有制表符,而不是空格。第二行末尾还有一个选项卡,没有给出图标。

将此文件保存在您网站上的某个位置,并将此代码放在您的图层正在初始化的位置。

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

文本文件可以通过服务器端语言(例如 PHP)动态创建。

这里有一个在线示例

于 2013-05-15T09:51:35.887 回答