优化路线上的经停点的顺序

默认情况下,Routes API Compute Routes 方法会按照您提供的顺序计算途经多个经停点(称为停靠航点)的路线。

您可以通过以更高效的顺序重新排列经停点,让 Routes API 优化所提供的路线。航点优化会针对行程时间进行优化,但在确定哪条路线最高效时,也会考虑距离和转弯次数等其他因素。

优化航点

  1. 请确保路线中的所有航点都未将 via 设置为 true,例如:{"address": "Clare,SA", "via": true}。如需详细了解中间航点,请参阅指定中间航点

  2. 确保 routing_preference 未设置为 TRAFFIC_AWARE_OPTIMAL

  3. optimize_waypoint_order 设置为 true。例如:

    "optimizeWaypointOrder": "true",
    
  4. 在字段掩码中指定 routes.optimizedIntermediateWaypointIndex 字段:

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    RPC

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

了解如何优化航点顺序

下面介绍了 Routes API 如何优化路线中航点的顺序:

  1. 根据您在请求中提供的航点顺序,自动将航点编入索引(从 0 开始)。

  2. 使用在请求中分配给航点的索引编号来优化航点的顺序。

  3. 返回 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": "Connawarra,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.optimizedIntermediateWaypointIndex' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Routes API 会将请求中提供的中间航点编入索引(从 0 开始)。例如:

0    {"address": "Barossa+Valley,SA"},
1    {"address": "Clare,SA"},
2    {"address": "Connawarra,SA"},
3    {"address": "McLaren+Vale,SA"}

然后,服务会使用请求中提供的四个航点的索引编号返回优化顺序:

"optimizedIntermediateWaypointIndex": [
                3,
                2,
                0,
                1
            ]