1. 程式人生 > >基於百度地圖API刪除指定的覆蓋物

基於百度地圖API刪除指定的覆蓋物

引用百度地圖API過程中,想刪除指定的覆蓋物,有很多很多的坑。什麼clearOverlay()方法,直接給我所有覆蓋物都給乾沒了。還有網上介紹的removeOverlay(物件),這種又介紹不清楚,然後自己經過實踐,最終解決了。

直接上圖、上程式碼。

查詢所有地圖的覆蓋物程式碼:

// 獲取所有的地圖覆蓋物
var allOverlay = map.getOverlays();
console.log(allOverlay);

 

然後看控制檯輸出,會輸出一堆東西,我們只需要關心自己的內容就行了。這個圖看看就行了。繼續看下面!

 

上面只是舉個例子,就是說會有幾十個覆蓋物出現,我們需要找到我們自己要的那個覆蓋物,然後刪除。

這裡我圈出來一個“BMapLib.PoiLayer”,這個裡面有很多,然後我需要的其實是:"BMapLib.ChannelLayer",裡面有個屬性叫做“poiInfo”,然後呢這個poiInfo的值為channel,形式如下:poiInfo: "channel"

我們只需要用迴圈,然後找到這個poiInfo,然後判斷您是否等於“channel”,如果等於,就將這個覆蓋物刪除就對了!程式碼如下:

// 判斷是否是選擇的基礎單元,然後先將整個基礎單元的資訊給移除,再新增加周邊基礎單元資訊
for(var i = 0; i < allOverlay.length; i++) {
    if("channel" == allOverlay[i].poiInfo) {
        map.removeOverlay(allOverlay[i]);
         // 這裡一定要繼續刪除下一個!不然是不能把圖示給刪除的!至於什麼原因,列印一下allOverlay即可明瞭
        map.removeOverlay(allOverlay[i+1]);
    }
}

這裡就是進行判斷,然後呼叫removeOverlay(allOverlay[i])覆蓋物方法!這裡強調一下,我是必須再刪除下一個才能夠把我的覆蓋物移除,你們做的過程中,根據實際需要來刪!