我有一個小應用程序,使用谷歌地圖的方向服務功能。它運行良好,我可以更改路線,但是我遇到了一個小問題,用戶在追蹤路線後可以返回到標記列表。刪除路線與谷歌地圖
我找不到用google map刪除路線的方法。對於標記我存儲它們,並做setMap(null)
,在這裏沒有看到一個方法...
我有一個小應用程序,使用谷歌地圖的方向服務功能。它運行良好,我可以更改路線,但是我遇到了一個小問題,用戶在追蹤路線後可以返回到標記列表。刪除路線與谷歌地圖
我找不到用google map刪除路線的方法。對於標記我存儲它們,並做setMap(null)
,在這裏沒有看到一個方法...
如果您正在使用DirectionsRenderer顯示路由,您也可以調用setMap(null)。這樣你刪除顯示的路線。
使用這裏 http://code.google.com/apis/maps/documentation/javascript/examples/directions-simple.html
示例代碼只是調用
directionsDisplay.setMap(null);
您還可以使用:
directionsDisplay.setDirections({routes: []});
通過這種方式,您可以繼續使用地圖,一次一個渲染器所有路線。
其他答案不適合我。我發現從this question
的解決方案定義directionsDisplay
只有1次(在click
-handler外)
我有類似的問題,我試着用directionsDisplay.setMap(null);
但沒有奏效。
問題是我創建的directionsDisplay
對象是在本地聲明的。
我將其更改爲全局,每次調用該函數時,都將使用同一個全局對象並對其進行更改。這肯定會刪除在同一個對象上顯示的前一條路線。
這是修復
// Clear past routes
if (directionsDisplay != null) {
directionsDisplay.setMap(null);
directionsDisplay = null;
}
明確地說是最佳答案,謝謝! – SachaDee 2017-04-02 12:42:40
集strokeWeight,用於:0,那麼折線會隱藏
由於在每次調用,DirectionRenderer的新實例創建這就是爲什麼每一個新的實例並不知道前一個實例。
移動
var directionsDisplay = new google.maps.DirectionsRenderer();
全球(在所有其他的全局變量已經被初始化的頂部)。
這樣,每次你會使用DirectionRenderer的單個實例。
如果您這樣做,它會在您嘗試用另一條路線覆蓋時返回,因此您會在地圖上顯示兩條路線。 – ajbraus 2014-10-27 18:45:00
這不是真的!我只是在一個小的POC中進行測試。當你運行'directionsDisplay.setDirections(方向)'並且使用'directionsDisplay.setMap(map)'將渲染器添加回地圖時,它可以正常工作。它只顯示一個路徑(「方向」變量的內容)。代碼中必須存在其他問題。 – Tomik 2014-10-27 22:20:39
這可以從您的地圖中移除directionsDisplay對象,但是如果您將一個路線替換爲另一個路線,它只會將替換的路線添加到地圖中。 – ajbraus 2015-11-06 00:50:22