Google Map - 距离矩阵API - 结果顺序

时间:2017-10-16 13:58:47

标签: c# api google-maps google-distancematrix-api

关于Google Map - 距离矩阵API。结果是否会保证在同一订单中有要求? 如果我要求API获取从一个目的地到多个目的地的距离,结果排序是否保证与请求的顺序相匹配?

我需要将业务对象映射到API调用的结果,我找不到硬地图它们的方法。只有订单缝适合。

感谢您的意见。

雨果

2 个答案:

答案 0 :(得分:1)

Distance Matrix API Web服务将结果作为rows数组返回,其中每个行项对应于请求中origins参数的一个来源,并且保留顺序与原始请求中一样。每个行项都包含elements数组,其中每个元素对应于请求中destinations参数的一个目标,并且订单也会保留。

您可以查看官方文档,其中解释了Distance Matrix API响应结构:

https://developers.google.com/maps/documentation/distance-matrix/intro#DistanceMatrixResponses

希望这有帮助!

答案 1 :(得分:1)

1)结果如果它是JSON响应,它将采用相同的格式。   示例:a.Single响应:

{
    "destination_addresses": [
      "Karnataka, India"
    ],
    "origin_addresses": [
       "Delhi, India"
    ],
    "rows": [
       {
           "elements": [
               {
                   "distance": {
                       "text": "1,942 km",
                       "value": 1941907
                   },
                   "duration": {
                       "text": "1 day 9 hours",
                       "value": 120420
                   },
                   "status": "OK"
               }
           ]
       }
   ],
   "status": "OK"
}

湾多重回应:

{
    "destination_addresses": [
    "67-89 Pacific St, Brooklyn, NY 11201, USA",
    "67-89 Pacific St, Brooklyn, NY 11201, USA",
    "67-89 Pacific St, Brooklyn, NY 11201, USA",
    "67-89 Pacific St, Brooklyn, NY 11201, USA",
    "67-89 Pacific St, Brooklyn, NY 11201, USA",
    "67-89 Pacific St, Brooklyn, NY 11201, USA",
    "557-599 Dr Wesley McDonald Ave, Brooklyn, NY 11203, USA",
    "66-0-66-26 103rd St, Rego Park, NY 11374, USA",
    "1000 N Village Ave, Rockville Centre, NY 11570, USA",
    "300-448 Beach 19th St, Far Rockaway, NY 11691, USA",
    "557-599 Dr Wesley McDonald Ave, Brooklyn, NY 11203, USA",
    "66-0-66-26 103rd St, Rego Park, NY 11374, USA",
    "1000 N Village Ave, Rockville Centre, NY 11570, USA",
    "300-448 Beach 19th St, Far Rockaway, NY 11691, USA"
],
"origin_addresses": [
    "566 Vermont St, Brooklyn, NY 11207, USA"
],
"rows": [
    {
        "elements": [
            {
                "distance": {
                    "text": "6.5 mi",
                    "value": 10423
                },
                "duration": {
                    "text": "35 mins",
                    "value": 2096
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "6.5 mi",
                    "value": 10423
                },
                "duration": {
                    "text": "35 mins",
                    "value": 2096
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "6.5 mi",
                    "value": 10423
                },
                "duration": {
                    "text": "35 mins",
                    "value": 2096
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "6.5 mi",
                    "value": 10423
                },
                "duration": {
                    "text": "35 mins",
                    "value": 2096
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "6.5 mi",
                    "value": 10423
                },
                "duration": {
                    "text": "35 mins",
                    "value": 2096
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "6.5 mi",
                    "value": 10423
                },
                "duration": {
                    "text": "35 mins",
                    "value": 2096
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "2.9 mi",
                    "value": 4662
                },
                "duration": {
                    "text": "18 mins",
                    "value": 1086
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "8.5 mi",
                    "value": 13738
                },
                "duration": {
                    "text": "23 mins",
                    "value": 1367
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "15.9 mi",
                    "value": 25544
                },
                "duration": {
                    "text": "29 mins",
                    "value": 1755
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "13.2 mi",
                    "value": 21296
                },
                "duration": {
                    "text": "34 mins",
                    "value": 2058
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "2.9 mi",
                    "value": 4662
                },
                "duration": {
                    "text": "18 mins",
                    "value": 1086
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "8.5 mi",
                    "value": 13738
                },
                "duration": {
                    "text": "23 mins",
                    "value": 1367
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "15.9 mi",
                    "value": 25544
                },
                "duration": {
                    "text": "29 mins",
                    "value": 1755
                },
                "status": "OK"
            },
            {
                "distance": {
                    "text": "13.2 mi",
                    "value": 21296
                },
                "duration": {
                    "text": "34 mins",
                    "value": 2058
                },
                "status": "OK"
            }
        ]
    }
],
"status": "OK"
}

2)我认为上面的例子也应该处理第二个问题。

3)使用.NET对象,可以轻松映射结果JSON。这是下面映射的类

public class Response
    {
        public string Status { get; set; }

        [JsonProperty(PropertyName = "destination_addresses")]
        public string[] DestinationAddresses { get; set; }

        [JsonProperty(PropertyName = "origin_addresses")]
        public string[] OriginAddresses { get; set; }

        public Row[] Rows { get; set; }

        public class Data
        {
            public int Value { get; set; }
            public string Text { get; set; }
        }

        public class Element
        {
            public string Status { get; set; }
            public Data Duration { get; set; }
            public Data Distance { get; set; }
        }

        public class Row
        {
            public Element[] Elements { get; set; }
        }
    }

希望这有帮助:)