2011-03-08 179 views
26

我有一個小應用程序,使用谷歌地圖的方向服務功能。它運行良好,我可以更改路線,但是我遇到了一個小問題,用戶在追蹤路線後可以返回到標記列表。刪除路線與谷歌地圖

我找不到用google map刪除路線的方法。對於標記我存儲它們,並做setMap(null),在這裏沒有看到一個方法...

回答

28

如果您正在使用DirectionsRenderer顯示路由,您也可以調用setMap(null)。這樣你刪除顯示的路線。

使用這裏 http://code.google.com/apis/maps/documentation/javascript/examples/directions-simple.html

示例代碼只是調用

directionsDisplay.setMap(null); 
+3

如果您這樣做,它會在您嘗試用另一條路線覆蓋時返回,因此您會在地圖上顯示兩條路線。 – ajbraus 2014-10-27 18:45:00

+0

這不是真的!我只是在一個小的POC中進行測試。當你運行'directionsDisplay.setDirections(方向)'並且使用'directionsDisplay.setMap(map)'將渲染器添加回地圖時,它可以正常工作。它只顯示一個路徑(「方向」變量的內容)。代碼中必須存在其他問題。 – Tomik 2014-10-27 22:20:39

+2

這可以從您的地圖中移除directionsDisplay對象,但是如果您將一個路線替換爲另一個路線,它只會將替換的路線添加到地圖中。 – ajbraus 2015-11-06 00:50:22

41

您還可以使用:

directionsDisplay.setDirections({routes: []}); 

通過這種方式,您可以繼續使用地圖,一次一個渲染器所有路線。

+2

對我來說,這是一個更好的解決方案,因爲如果您嘗試再次獲取路線,第一個解決方案將拋出JS錯誤。 但是,我didely 'directionsDisplay.setDirections({routes:[]});' – DemitryT 2012-03-07 17:43:26

+1

我同意,使用文字是比使用新關鍵字更好的解決方案,我已經更新了我的答案。 – thomaux 2012-03-09 15:14:05

+1

這不允許我繼續使用相同的地圖。它只是在相同的地圖上疊加路線。 – ajbraus 2014-10-27 18:46:16

4

其他答案不適合我。我發現從this question

的解決方案定義directionsDisplay只有1次(在click -handler外)

1

我有類似的問題,我試着用directionsDisplay.setMap(null);但沒有奏效。

問題是我創建的directionsDisplay對象是在本地聲明的。

我將其更改爲全局,每次調用該函數時,都將使用同一個全局對象並對其進行更改。這肯定會刪除在同一個對象上顯示的前一條路線。

3

這是修復

// Clear past routes 
if (directionsDisplay != null) { 
    directionsDisplay.setMap(null); 
    directionsDisplay = null; 
} 
+0

明確地說是最佳答案,謝謝! – SachaDee 2017-04-02 12:42:40

0

集strokeWeight,用於:0,那麼折線會隱藏

3

由於在每次調用,DirectionRenderer的新實例創建這就是爲什麼每一個新的實例並不知道前一個實例。

移動

var directionsDisplay = new google.maps.DirectionsRenderer(); 

全球(在所有其他的全局變量已經被初始化的頂部)。

這樣,每次你會使用DirectionRenderer的單個實例。