使用 Routes API,通过调用 computeRouteMatrix 方法 (REST) 或流式 ComputeRouteMatrix 方法 (gRPC),计算多个出发地和目的地的路线距离和时长。
给定一个出发地和目的地列表,该方法会计算从每个出发地开始到每个目的地结束的路线的距离和时长。
获取公交路线矩阵
您还可以计算公交路线矩阵。如需查看示例,请参阅获取公交路线矩阵。
请求限制
Compute Route Matrix 方法对使用地址或地点 ID 的航点以及元素强制执行以下请求限制。元素是指路线矩阵中每个出发地和目的地之间的路线,因此元素数量等于出发地数量乘以目的地数量。例如,如果您有 10 个出发地和 10 个目的地,则有 100 个元素:
对于非
TRANSIT路线,元素数量不能超过 625。如果您指定
TRANSIT路由,则元素数量不能超过 100。如果您指定
TRAFFIC_AWARE_OPTIMAL,则元素数量不能超过 100。如需详细了解TRAFFIC_AWARE_OPTIMAL,请参阅指定是否以及如何添加路况数据。如果您使用地址或地点 ID 指定起点或终点,则以此方式指定的起点和终点总数最多为 50 个。
响应错误
Compute Route Matrix 方法的一个特点是,可以针对整个响应或单个响应元素返回错误。例如,如果请求格式不正确(例如,其起点数为零),则整个响应都会包含错误。
不过,如果错误仅适用于响应中的部分元素(例如,无法计算某个起点和终点组合的路线),则只有受错误影响的元素会返回错误代码。
gRPC 流式传输结果
ComputeRouteMatrix gRPC 方法接受出发地和目的地列表,并返回一个流,其中包含每个出发地和目的地组合的路线信息。由于结果是以流的形式返回,因此您无需等待所有可能的路线组合都计算完毕,即可开始处理结果。
无法保证数据流返回的元素会按任何顺序返回。因此,每个响应元素都包含一个 origin_index 和一个 destination_index。对于请求指定的出发地和目的地,路线出发地等同于给定元素的 origins[origin_index],路线目的地等同于 destinations[destination_index]。这些数组采用零索引。请务必存储来源列表和目标列表的顺序。
计算路线矩阵示例
在 HTTP 请求中使用 computeRouteMatrix 方法来计算路线矩阵。
HTTP 示例
以下示例展示了一个 computeRouteMatrix HTTP 请求。在此示例中,您:
指定一个包含两个起点航点和两个终点航点的数组。该方法会计算从每个出发地到每个目的地的路线,因此响应包含四条路线。
在数组中,第一个元素的索引为 0,第二个元素的索引为 1,依此类推。
添加响应字段掩码,以指定要返回响应 (REST) 或 ComputeRoutesResponse (gRPC) 的哪些字段。在此示例中,将请求配置为返回每条路线的
originIndex、destinationIndex、duration、distanceMeters、status和condition。如需了解详情,请参阅选择要返回的字段。
curl -X POST -d '{ "origins": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420761, "longitude": -122.081356 } } }, "routeModifiers": { "avoid_ferries": true} }, { "waypoint": { "location": { "latLng": { "latitude": 37.403184, "longitude": -122.097371 } } }, "routeModifiers": { "avoid_ferries": true} } ], "destinations": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420999, "longitude": -122.086894 } } } }, { "waypoint": { "location": { "latLng": { "latitude": 37.383047, "longitude": -122.044651 } } } } ], "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \ 'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'
响应包含所有起点和终点航点组合的四种可能路线。
使用 originIndex 和 destinationIndex 响应字段标识响应中的每条路线。例如,响应中的 originIndex 为 1 对应于根据请求中 origins 数组索引 1 处的航点计算出的路线。
[ { "originIndex": 0, "destinationIndex": 0, "status": {}, "distanceMeters": 822, "duration": "160s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 0, "status": {}, "distanceMeters": 2919, "duration": "361s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 1, "status": {}, "distanceMeters": 5598, "duration": "402s", "condition": "ROUTE_EXISTS" }, { "originIndex": 0, "destinationIndex": 1, "status": {}, "distanceMeters": 7259, "duration": "712s", "condition": "ROUTE_EXISTS" } ]
gRPC 示例
如需查看 gRPC 请求示例,请参阅示例 gRPC 请求中的示例。该页面上的 Java 示例会同时调用 Compute Routes 和 Compute Route Matrix。