Openlayers 显示openlayer标记

Openlayers 显示openlayer标记,openlayers,Openlayers,这里我使用谷歌标记,获取纬度和经度值,并使用开放层标记显示谷歌位置标记。这里是一段代码 function googleMarker(name, lat, lng, address, types, iconImage) { var nameLength = name.length; nameLength = nameLength+120; var lonLat = new OpenLayers.LonLat( lng ,lat ).transfo

这里我使用谷歌标记,获取纬度和经度值,并使用开放层标记显示谷歌位置标记。这里是一段代码

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);                                    
    });         
}
功能谷歌标记(名称、纬度、液化天然气、地址、类型、图标)
{       
var nameLength=name.length;
nameLength=nameLength+120;
var lonLat=new OpenLayers.lonLat(lng,lat).transform(new OpenLayers.Projection(“EPSG:4326”),map.getProjectionObject();
trackMarkers=新的OpenLayers.Layer.Markers(“Markers”);
var size=新的OpenLayers.size(20,20);
var偏移=新的OpenLayers.Pixel(-(大小为w/2),-(大小为h/2));
var icon=新的OpenLayers.icon(图标大小、偏移量);
添加图层(轨迹标记);
trackMarker=newopenlayers.Marker(lonLat,图标);
trackMarker.addMarker(trackMarker);
trackMarker.events.register('click',trackMarker,function(evt)
{   
popup=新建OpenLayers.popup.FramedCloud(“featurePopup”,lonLat,null,“+name+”,“+address+”,null,null);
map.addPopup(弹出窗口);
});         
}
这是解析并投影到开放层上的内容,我面临的问题是如何在选择下一个标记并单击地图之前删除先前启用的弹出窗口。该弹出窗口应被取消


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

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

map.addPopup(popup, true);
编辑:如果您想在单击地图时删除所有弹出窗口,可以通过以下方式执行:

map.events.register("click", map , function(e){ 
   while(map.popups.length){
      map.removePopup(map.popups[0]);
   } 
}); 

在你的地图被初始化后,我确实有一个类似于点击地图的要求,所有弹出窗口都应该被禁用,你能告诉我如何实现它吗,而(map.popups.length){map.removePopup(map.popups[0]);}map.events.register(“点击”,地图,函数(e){while(map.popups.length){map.removepup(map.popup[0]);});在地图初始化之后
map.events.register("click", map , function(e){ 
   while(map.popups.length){
      map.removePopup(map.popups[0]);
   } 
});