-1

假設我有3個地點的列表--A,B和C,我試圖找到每個地點之間最短的駕駛距離:我如何顯示在iOS中使用谷歌地圖的多個目的地的單一路線

A到B A到C B到A B到C C到A C到B

我需要這100個不同的位置,我想找到以獲得最佳方式此信息。如果這個問題已經被分解,然後我需要一種方法來找到 A到 A B到C

和分別爲B到A,B到C,並分別從C到A,C至B.

+1

不知道地圖API是否爲此提供服務,但它是一個非常着名的信息技術問題。它被稱爲旅行推銷員問題。 NP中的一個難題。閱讀更多。至少如果我明白你想找到最短的路線。 – Blackbam

+0

你需要澄清你的問題,並顯示你已經嘗試過。例如。你想解決什麼問題?我猜想最短路徑(如果查找Dijkstra),@Blackbam已經去了TSP。或者,這可能更多是一個Google API問題。 – CRD

回答

1

我相信你要找的東西就是距離矩陣API。請在這裏看到的文檔:

https://developers.google.com/maps/documentation/distance-matrix/start

注意,這絕對不是正是你所尋找的東西,但它是谷歌提供的最近的事情。見例如要求:

https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Washington,DC|Houston,TX|New+York+City,NY&destinations=Washington,DC|Houston,TX|New+York+City,NY&key=MY_API_KEY

這會給你所有來源向所有目的地的距離。爲了與您的使用案例一起工作,您需要讓源和目的地與上例中的相同。在我的示例中,API返回以下內容:

{ 
"destination_addresses" : [ "Washington, DC, USA", "Houston, TX, USA", "New York, NY, USA" ], 
"origin_addresses" : [ "Washington, DC, USA", "Houston, TX, USA", "New York, NY, USA" ], 
"rows" : [ 
    { 
    "elements" : [ 
     { 
      "distance" : { 
       "text" : "1 ft", 
       "value" : 0 
      }, 
      "duration" : { 
       "text" : "1 min", 
       "value" : 0 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1,408 mi", 
       "value" : 2266226 
      }, 
      "duration" : { 
       "text" : "20 hours 22 mins", 
       "value" : 73331 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "225 mi", 
       "value" : 361722 
      }, 
      "duration" : { 
       "text" : "3 hours 48 mins", 
       "value" : 13672 
      }, 
      "status" : "OK" 
     } 
    ] 
    }, 
    { 
    "elements" : [ 
     { 
      "distance" : { 
       "text" : "1,409 mi", 
       "value" : 2266981 
      }, 
      "duration" : { 
       "text" : "20 hours 28 mins", 
       "value" : 73678 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1 ft", 
       "value" : 0 
      }, 
      "duration" : { 
       "text" : "1 min", 
       "value" : 0 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1,628 mi", 
       "value" : 2620605 
      }, 
      "duration" : { 
       "text" : "23 hours 44 mins", 
       "value" : 85438 
      }, 
      "status" : "OK" 
     } 
    ] 
    }, 
    { 
    "elements" : [ 
     { 
      "distance" : { 
       "text" : "226 mi", 
       "value" : 364085 
      }, 
      "duration" : { 
       "text" : "3 hours 53 mins", 
       "value" : 13965 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1,627 mi", 
       "value" : 2618345 
      }, 
      "duration" : { 
       "text" : "23 hours 43 mins", 
       "value" : 85385 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "1 ft", 
       "value" : 0 
      }, 
      "duration" : { 
       "text" : "1 min", 
       "value" : 0 
      }, 
      "status" : "OK" 
     } 
    ] 
    } 
], 
"status" : "OK" 
} 

您可以看到從所有位置到所有三個位置的距離已成功返回。請記住這個API的使用限制,以及:

https://developers.google.com/maps/documentation/distance-matrix/usage-limits

有了一個標準的項目,你可以有一個最大的每個請求的100個元素。請注意,要獲取元素,您需要將原點數乘以目標數。使用標準項目,您可以有10個目的地和10個來源。這就是說,你將無法在單個請求中爲100個位置執行此操作。除非您有一個高級項目,否則您需要分批次執行10個地點。對於高級項目,您可以遵循相同的邏輯,但同時使用25個位置。

我只是想讓你知道最接近的解決方案,我可以想到你在找什麼。我希望這有幫助!

相關問題