默认情况下,Routes API Compute Routes
方法会按您提供的顺序计算经过多个经停点(称为经停点航点)的路线。
您可以使用 Routes API 以更高效的顺序重新排列经停点,从而对提供的路线进行优化。路点优化会针对行程时间进行优化,但在确定哪条路线最高效时,也会考虑距离和转弯次数等其他因素。
优化航点
确保路线中的所有航点都没有将
via
设置为true
,例如{"address": "Clare,SA", "via": true}
。如需详细了解中间航点,请参阅指定中间航点。确保
routing_preference
未设置为TRAFFIC_AWARE_OPTIMAL
。将
optimize_waypoint_order
设置为true
。例如:"optimizeWaypointOrder": "true",
在字段掩码中指定
routes.optimizedIntermediateWaypointIndex
字段:REST
-H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex
RPC
const (fieldMask = "routes.optimizedIntermediateWaypointIndex")
了解如何优化航点顺序
Routes API 会按如下方式优化路线中的路径点顺序:
自动为航点编制索引,编号从 0 开始,依据您在请求中提供的顺序。
使用为请求中的航点分配的索引编号来优化航点的顺序。
在
routes
对象的routes.optimizedIntermediateWaypointIndex
下方的waypoint_order
字段中返回优化的航点顺序。
示例
此请求要求优化从南澳大利亚阿德莱德到南澳大利亚各主要葡萄酒产区再返回阿德莱德的路线。
curl -X POST -H 'content-type: application/json' -d ' { "origin": { "address": "Adelaide,SA" }, "destination": { "address": "Adelaide,SA" }, "intermediates": [ {"address": "Barossa+Valley,SA"}, {"address": "Clare,SA"}, {"address": "Coonawarra,SA"}, {"address": "McLaren+Vale,SA"} ], "travelMode": "DRIVE", "optimizeWaypointOrder": "true" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes,geocodingResults.intermediates.intermediateWaypointRequestIndex' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
Routes API 会为请求中提供的中间航点编入索引,索引从 0 开始。例如:
0 {"address": "Barossa+Valley,SA"}, 1 {"address": "Clare,SA"}, 2 {"address": "Coonawarrav,SA"}, 3 {"address": "McLaren+Vale,SA"}
然后,该服务使用请求中提供的四个航点的索引编号返回优化后的顺序:
"optimizedIntermediateWaypointIndex": [ 3, 2, 0, 1 ]