Google 地图 - 距离矩阵 API - 结果顺序
Google Map - Distance Matrix API - result order
关于 Google 地图 - 距离矩阵 API。结果是否会保证在同一个订单中有要求?
如果我请求 API 获取从一个起点到多个终点的距离,结果排序是否保证与请求的顺序相匹配?
我需要将我的业务对象映射到 API 调用的结果,但我找不到 硬映射 它们的方法。只有订单接缝适合。
感谢您的意见。
雨果
距离矩阵 API 网络服务 returns 结果为 rows
数组,其中每个行项目对应于请求中 origins
参数的一个来源,并且顺序被保留与原始请求一样。每行项目包含 elements
数组,其中每个元素对应于请求中 destinations
参数的一个目的地,并且顺序被保留。
您可以查看解释距离矩阵 API 响应结构的官方文档:
https://developers.google.com/maps/documentation/distance-matrix/intro#DistanceMatrixResponses
希望对您有所帮助!
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"
}
b。多项回复:
{
"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 可以很容易 mapped.Here 是下面映射的 class
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; }
}
}
希望这对您有所帮助 :)
关于 Google 地图 - 距离矩阵 API。结果是否会保证在同一个订单中有要求? 如果我请求 API 获取从一个起点到多个终点的距离,结果排序是否保证与请求的顺序相匹配?
我需要将我的业务对象映射到 API 调用的结果,但我找不到 硬映射 它们的方法。只有订单接缝适合。
感谢您的意见。
雨果
距离矩阵 API 网络服务 returns 结果为 rows
数组,其中每个行项目对应于请求中 origins
参数的一个来源,并且顺序被保留与原始请求一样。每行项目包含 elements
数组,其中每个元素对应于请求中 destinations
参数的一个目的地,并且顺序被保留。
您可以查看解释距离矩阵 API 响应结构的官方文档:
https://developers.google.com/maps/documentation/distance-matrix/intro#DistanceMatrixResponses
希望对您有所帮助!
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"
}
b。多项回复:
{
"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 可以很容易 mapped.Here 是下面映射的 class
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; }
}
}
希望这对您有所帮助 :)