显示开放标记

时间:2013-04-08 06:56:42

标签: openlayers

这里使用谷歌标记并获取纬度和经度值并使用开放层标记显示谷歌地方标记这里是一段代码

function googleMarker(name, lat, lng, address, types, iconImage)
{       
    var nameLength = name.length;       
    nameLength = nameLength+120;
    var lonLat = new OpenLayers.LonLat( lng ,lat ).transform(new OpenLayers.Projection("EPSG:4326"),map.getProjectionObject());                         
    trackMarkers = new OpenLayers.Layer.Markers("Markers");
    var size = new OpenLayers.Size(20, 20);
    var offset = new OpenLayers.Pixel(-(size.w / 2), -(size.h / 2));                        
    var icon = new OpenLayers.Icon(iconImage, size, offset);                                        
    map.addLayer(trackMarkers);
    trackMarker = new OpenLayers.Marker(lonLat, icon);
    trackMarkers.addMarker(trackMarker);        

    trackMarker.events.register('click', trackMarker, function(evt) 
    {   
        popup = new OpenLayers.Popup.FramedCloud("featurePopup",lonLat, null,'<div style="color:#FF0000;">'+name+","+address + '</div>', null, null);                                       
        map.addPopup(popup);                                    
    });         
}

这里是解析并投影到开放层,我面临的问题是如何删除以前启用的弹出窗口,然后选择下一个标记并点击地图,这个弹出窗口应该被解雇。

enter image description here

1 个答案:

答案 0 :(得分:0)

根据OpenLayers文档here,您可以在addPopup()调用中指定它:

addPopup: function(popup, exclusive)
Parameters:    popup        {OpenLayers.Popup}
               exclusive    {Boolean} If true, closes all other popups first

因此,在您的情况下,请通过以下方式更改最后一行中的addPopup调用:

map.addPopup(popup, true);

编辑:如果您想在点击地图时删除所有弹出窗口,可以这样做:

map.events.register("click", map , function(e){ 
   while(map.popups.length){
      map.removePopup(map.popups[0]);
   } 
}); 
初始化地图后