2010-10-27 78 views
3

因此,我只是在學習JavaScript以處理Google Maps API。我想知道是否有人有一個優雅的解決方案,我遇到了這個問題。谷歌地圖V3中沒有設定目的地的最短路線?

一個谷歌地圖路由請求必須包含三件事情(出發地,目的地和travelMode)。我的旅行模式將永遠在駕駛。原點始終位於用戶所在的位置。

目標,就更加需要改變。我有幾個航點,用戶將訪問,並希望提供最短的旅程,具體取決於選擇哪些航點和用戶在哪裏,在航點之一結束航線(例如:ABC或ACB,但總是Axx。 ..X)。

是否有任何可能的方式不是計算具有最短距離(或時間,或任何我評估上)每一個可能的路徑,看到這樣做其它?看起來這將是非常昂貴的(O(n!))。

編輯:在建議optimizeWaypoints標誌設置爲true的情況下,這會變成一個O(n)問題而不是O(n!),但現在我在太短時間內發出太多請求時遇到問題。

回答

6

有一個在谷歌的方向設置,以提供優化的路由(optimizeWaypoints - http://code.google.com/apis/maps/documentation/javascript/services.html#Directions)你可以將它設置爲true,在你的方向對象

+0

我已經這樣做了,但我仍然被迫設定了目的地。我不能只是將其設置爲true,並將所有航點上的請求提供給我。我現在正在處理的事情很簡單,就是爲n個路標創建n條路線,將請求A作爲原點,將b-n作爲目的地,將所有航點減去每條路線的目的地。這給了我一條我可以計算距離的路線,現在要做一些嚴格的測試,看看它是否適用於任何體面的路點。 – Crag 2010-10-28 00:00:49

+3

好吧,我最終使用的解決方案是基於這個答案,所以它得到的複選標記。我現在擁有的是我的航點以及一些非常遙遠的位置。我會根據我的要求發送所有航點,讓Google從我的起始位置到最遠的目的地找到這些航點的最佳路線,然後將新訂的航點出發。然後,我將最終航點設置爲新目的地,並使用現在包含一個較少航點的一組航點啓動另一個請求。這給了我後面的路線。 – Crag 2010-10-28 18:08:11

+0

我有同樣的問題,我需要與其他點一起計算最佳目的地。我喜歡你的解決方案。謝謝。 – 2013-01-29 23:52:31

1

如果你想在最短的路線,你可以先打電話到谷歌distanceMatrix API並獲得停止的排序列表。

然後調用與排序列表API方向。