基於百度地圖API刪除指定的覆蓋物
阿新 • • 發佈:2018-11-26
引用百度地圖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])覆蓋物方法!這裡強調一下,我是必須再刪除下一個才能夠把我的覆蓋物移除,你們做的過程中,根據實際需要來刪!