デフォルトでは、API は中間地点をルート上の停車地として扱います。
ただし、中間地点を通過地点として構成し、車両が停車せずに通過するようにすることもできます。via
通過地点を使用して、特定のルートを形成または調整します。ルートを個別の乗車地点または降車地点に分割するのではなく、通過地点を使用すると、ルーティング エンジンは目的地までの途中で特定の場所を通過します。たとえば、優先する道路区間を通る場合や、既知の危険を回避する場合などです。
出発地、1 つ以上の通過地点、目的地を含むルートには、出発地から目的地に直接接続するルート区間が 1 つ しか含まれません。
中間地点を通過地点として構成するには、地点の
via プロパティを true に設定します。設定は REST
Waypoint リソースまたは gRPC
Waypoint メッセージで行います。
Routes API では住所、プレイス ID、緯度と経度の座標を使用できますが、通過地点の場合は緯度と経度(latLng)の座標を使用すると、ルートを最も正確に調整できます。
via プロパティは、地図上で地点をドラッグしてルートを作成する場合に最も効果的です。この方法では、最終的なルートをリアルタイムで確認できるため、アクセスしやすい場所に地点を配置できます。
例: 通過地点を設定する
次の例は、完全な computeRoutes POST リクエストで中間地点に "via": true を設定する方法を示しています。
curl -X POST -d '{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "intermediates": [ { "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0807784 } }, "via": true } ], "travelMode": "DRIVE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
通過地点に住所またはプレイス ID を使用する
正確な通過ルーティングには緯度と経度の座標を使用することをおすすめしますが、住所文字列またはプレイス ID を使用して中間地点を指定することもできます。
通過地点に住所またはプレイス ID を使用すると、API は位置を補間して、最も近いナビゲーション可能な道路にスナップします。この道路スナップ処理では、正確な座標と比較して、ルートが変動したり、不正確になったりすることがあります。
住所文字列 またはプラスコード を使用して地点を指定すると、API
はその位置をジオコーディングし、レスポンスの
geocodingResults.intermediates
配列で一致するプレイス ID を返します。
intermediates 配列の各要素について、intermediateWaypointRequestIndex プロパティを使用して、リクエスト内のどの地点がレスポンス内のプレイス ID に対応するかを判断します。
例: 通過地点のプレイス ID をリクエストする
次の例は、3 つの通過地点を含むリクエストを示しています。各地点で "via": true が指定されています。
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "intermediates": [ { "address": "450 Serra Mall, Stanford, CA 94305, USA", "via": true }, { "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0807784 } }, "via": true }, { "address": "1836 El Camino Real, Redwood City, CA 94063", "via": true } ], "travelMode": "DRIVE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
レスポンスには、出発地、目的地、リクエスト インデックス 0 と 2 で住所を指定した 2 つの中間地点のプレイス ID を含む geocodingResults 配列が含まれます。緯度と経度の座標を使用して指定したため、API はインデックス 1 の中間地点を geocodingResults から除外します。
{ "routes": [ { "distanceMeters": 54200, "duration": "2400s", "legs": [ { "distanceMeters": 54200, "duration": "2400s", "startLocation": { "latLng": { "latitude": 37.4220, "longitude": -122.0841 } }, "endLocation": { "latLng": { "latitude": 37.7786, "longitude": -122.3893 } } } ] } ], "geocodingResults": { "origin": { "geocoderStatus": {}, "type": [ "premise" ], "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g" }, "destination": { "geocoderStatus": {}, "type": [ "premise" ], "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY" }, "intermediates": [ { "geocoderStatus": {}, "intermediateWaypointRequestIndex": 0, "type": [ "street_address" ], "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y" }, { "geocoderStatus": {}, "intermediateWaypointRequestIndex": 2, "type": [ "premise" ], "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0" } ] } }