デフォルトでは、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.optimizedIntermediateWaypointIndex
のwaypoint_order
フィールドのroutes
オブジェクトで返します。
例
このリクエストは、南オーストラリア州アデレードから南オーストラリア州の主要なワイン産地までのルートを最適化し、アデレードに戻るようにリクエストしています。
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"}
リクエストで指定された 4 つの経由地のインデックス番号を使用して、サービスは最適化された順序を返します。
"optimizedIntermediateWaypointIndex": [ 3, 2, 0, 1 ]