javascript - Openlayers 标记在多个标记上单击事件

标签 javascript popup openlayers markers

我正在动态加载多个标记并将它们添加到标记层。问题是,当我单击任何标记时,最后添加的标记上会出现相同的弹出窗口。

var markers = new OpenLayers.Layer.Markers("Markers");

    for(var i = 0; i < listd.length; i++)
    { 
        var lonLat = new OpenLayers.LonLat(listd[i].Longitude, listd[i].Latitude);

        var title = listd[i].Title;
        var iconPath = listd[i].IconPath;
        var size = new OpenLayers.Size(15, 22);
        var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);

        var icon = new OpenLayers.Icon(iconPath, size, offset);
        var marker = new OpenLayers.Marker(lonLat, icon.clone());

        markers.addMarker(marker);

        marker.events.register("click", marker, function(e){
            popup = new OpenLayers.Popup.FramedCloud("chicken",
                marker.lonlat,
                new OpenLayers.Size(200, 200),
                title,
                null, false );

            map.addPopup(popup);
        });
     } 
     map.addLayer(markers);

我错过了什么?

最佳答案

当你尝试这个时怎么样??? 更新新内容 Gmap url,图标中带有标签:3: http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld= [标签]|[图钉颜色]|[标签颜色]

http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=1|FE6256|000000

更多信息:https://developers.google.com/chart/

更新

 var markers = new OpenLayers.Layer.Markers("Markers");

for(var i = 0; i < listd.length; i++)
{ 
    (function(i){
         var lonLat = new OpenLayers.LonLat(listd[i].Longitude, listd[i].Latitude);

         var title = listd[i].Title;
         var iconPath = listd[i].IconPath;
         var size = new OpenLayers.Size(15, 22);
         var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);

         var icon = new OpenLayers.Icon(iconPath, size, offset);
         var marker = new OpenLayers.Marker(lonLat, icon.clone());

         markers.addMarker(marker);

        marker.events.register("click", marker, function(e){
            popup = new OpenLayers.Popup.FramedCloud("chicken",
                marker.lonlat,
                new OpenLayers.Size(200, 200),
                title,
                null, false );
              map.addPopup(popup);
         });
    })(i);
 } 
 map.addLayer(markers);

关于javascript - Openlayers 标记在多个标记上单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127366/

相关文章:

reactjs - 如何在 react 应用程序中将外部链接显示为弹出窗口?

javascript - anchor 链接滚动动画仅在 Squarespace 上刷新 (JQuery) 后才起作用

javascript - 在 JavaScript 中不使用 .concat 或 .reduce 的嵌套数组的递归方法

apache-flex - 弹性 4 : Title window goes out of accessible area

java - 在 Swing 中创建自动隐藏弹出通知框

android - openlayers 到 native android 应用程序

javascript - 使用控制比例线保存 map

javascript - OpenLayers strictExtent 缩放时不限制

javascript - 在javascript中的DataList中查找Div

javascript - 如何测试 mongodb criteria 对象中的两个外部值是否相等?