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