默认情况下,Routes API 返回默认路线,通常是从出发地到目的地的最快路线。当您请求备用路由时,API 最多会返回三条路由以及默认路由。这样,客户就可以选择最符合其需求的路线。
请求替代路由时的注意事项
如需请求备选路线,请注意以下事项:
您只能为没有中间航点的路线请求备选路线。在路线指定中间航点时请求备选路线不会导致错误。但是,系统不会返回任何替代路由。
响应最多包含三个备选路由。但是,有时没有可用的备用路由,因此响应仅包含默认路由。
由于计算备用路由需要进行额外的处理,因此请求备用路由可能会增加 API 的响应时间。
备选路线请求示例
将 computeAlternativeRoutes
设置为 true
以请求替代路由。以下示例展示了如何在 computeRoutes 方法 (REST) 请求中请求备用路由。
curl -X POST -d '{ "origin":{ "location":{ "latLng":{ "latitude":42.340173523716736, "longitude":-71.05997968330408 } } }, "destination":{ "location":{ "latLng":{ "latitude":42.075698891472804, "longitude": -72.59806562080408 } } }, "travelMode": "DRIVE", "routingPreference":"TRAFFIC_AWARE", "computeAlternativeRoutes": true }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
在此示例中,您将指定字段掩码,以便响应仅包含每个路线的 duration
、distanceMeters,
和 routeLabels
属性。这样,客户就可以根据这些信息来选择要采取的路线。如需了解详情,请参阅选择要返回的信息。
备选路由响应示例
在响应中,使用 routeLabels
数组属性来识别覆盖面路线:
对于默认路由,
routeLabels
属性包含DEFAULT_ROUTE
。对于任何备选路线,
routeLabels
属性均包含DEFAULT_ROUTE_ALTERNATE
。
在此示例中,响应包含默认路由和两个备用路由。请注意,对于各个路线,duration
和 distanceMeters
属性的值有所不同:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }
在响应中包含多段线
为便于用户选择路线,请在响应中添加每条路线的多段线。然后,您可以在地图上显示每条多段线。
如需添加多段线,请在字段掩码中添加 routes.polyline
:
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'
然后,响应会包含每条路线的多段线:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "polyline": { "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "polyline": { "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "polyline": { "encodedPolyline": "FVLL|Af@HPAV…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }