【问题标题】:Openlayers markers click events on multiple markersOpenlayers 标记单击多个标记上的事件
【发布时间】:2015-05-08 15:21:31
【问题描述】:

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

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);

我错过了什么?

【问题讨论】:

    标签: javascript popup openlayers markers


    【解决方案1】:

    当你尝试这个的时候呢??? 更新新的 带有图标标签的 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);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2012-01-21
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多