如何在iOS中使用谷歌地图显示多个目的地的单一路线

时间:2017-03-07 13:06:27

标签: ios objective-c google-maps google-distancematrix-api google-maps-sdk-ios

我们说我有3个地点的列表 - A,B和C,我正在尝试一次性找到每个地点之间的最短行车距离:

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

我需要在100个不同的位置使用此功能,我正在尝试找到获取此信息的最佳方式。如果必须解决这个问题,那么我需要一种方法来查找 A到B. A到C

并且分别为B至A,B至C,并且分别为C至A,C至B.

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找的壁橱是Distance Matrix API。请参阅此处的文档:

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

请注意,这绝对不是您想要的,但它是Google提供的最接近的东西。请参阅示例请求:

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个位置。

我只是想让你知道我能想到的最接近的解决方案。我希望这有帮助!