最近的項目中一直在用百度地圖车猬,今天用到了清除覆蓋物(Overlay)的方法。在這里mark一下。
點擊進入 JavaScript API v2.0類參考——覆蓋物Overlay
map.clearOverlays()
清除覆蓋物有兩個方法:map.removeOverlay()或者 map.clearOverlays(),clearOverlays()方法一次移除所有的覆蓋物,removeOverlay()一次移除一個指定覆蓋物秕豫。
在項目中,我需要一次移除所有的覆蓋物观蓄。
百度demo(點擊進入)有removeOverlay()的例子混移,如下:
function deletePoint(){
var allOverlay = map.getOverlays();
for (var i = 0; i < allOverlay.length -1; i++){
if(allOverlay[i].getLabel().content == "我是id=1"){
map.removeOverlay(allOverlay[i]);
return false;
}
}
}
保留某種覆蓋物
第一步:在添加覆蓋的時候對不需要進行移除操作的覆蓋設置disableMassClear();官網文檔解釋如下
disableMassClear() | none | 禁止覆蓋物在 map.clearOverlays 方法中被清除。 |
---|
我這里不需要對marker進行移除操作侮穿,所以設置如下:
marker.disableMassClear();
第二步:清除所要清除的覆蓋物歌径,這里需要清除所有的Polyline而不清除marker,現(xiàn)在可以直接使用
map.clearOverlays();
這樣就能很方便的清除所有Polyline而保留marker亲茅;
第三步:當后來需要對marker進行移除操作時回铛,可以使用enableMassClear()方法來取消禁止清除;
enableMassClear() | none | 允許覆蓋物在 map.clearOverlays 方法中被清除克锣。 |
---|
但是需要對每個marker進行恢復操作茵肃,所以需要進行遍歷:
var allOverlay = map.getOverlays();
for (var i = 0; i < allOverlay.length; i++) {
allOverlay[i].enableMassClear();
}
這樣就恢復了所有覆蓋物的可清除操作。
簡單三步設置便可高效操作指定類覆蓋物袭祟。