2010-11-03 49 views
4

LoadPin是爲地圖添加標記的功能。它在第一次調用時初始化圖層。地圖是一個openlayers地圖對象。使用OpenLayers,刪除標記圖層和彈出窗口的正確方法是什麼?

但使用map.removeLayer(「標記」)或「標記」,不會從地圖中刪除標記。我看到提到一個銷燬操作來做到這一點,但無法找到。

AND,我該如何刪除彈出窗口?

var markers = null 
function LoadPin(LL, name, description) { 
    var size = new OpenLayers.Size(36, 47); 
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h); 
    var icon = new OpenLayers.Icon('http://www.waze.co.il/images/home.png', size, offset); 

    if (markers == null) { 
     markers = new OpenLayers.Layer.Markers("Markers"); 
     map.addLayer(markers); 
    } 

    var marker = new OpenLayers.Marker(LL, icon) 
    markers.addMarker(marker); 
    var bounds = markers.getDataExtent(); 
    map.zoomToExtent(bounds); 

    map.addPopup(new OpenLayers.Popup.FramedCloud("test", LL, null, 
       "<div style='font-family:Arial,sans-serif;font-size:0.8em;'>" + name + "<br>" + description + "</div>", 
       anchor = null, true, null)); 
} 

回答

9

您可以從一個標記層除去單個標記:

markers.removeMarker(marker); 

刪除整個圖層,用標記應達到:

markers.destroy(); 

你應該能夠刪除彈出式:

map.removePopup(popup); 

其中popup是之前創建的Popup對象。

+0

工作就像一個魅力!謝謝! – GilShalit 2010-11-03 21:35:52

+0

是否可以隱藏標記? – 2016-11-17 23:14:18

10

我知道這個職位是舊的,但來自標記圖層列表使用刪除所有標記:

markerLayer.clearMarkers(); 
+0

我喜歡這種方法,但不確定文檔desc的相關性:「這種方法刪除圖層中的所有標記。標記不會被此功能破壞,但會從標記列表中刪除。」 – 2014-12-24 00:22:30

+0

@HaydenThring如果沒有其他引用他們,他們將被垃圾收集。 – 2015-01-05 08:49:20

相關問題