根據預設,API 會將中繼路線控點視為路線上的停靠點。不過,您可以將中途路線控點設為通過型 via 路線控點,讓車輛通過而不停車。
使用穿透路線控點,塑造或調整特定路線。穿過路線控點不會將路線分割成不同的上車或下車停靠點,而是強制路線引擎在前往目的地的途中經過特定位置,例如沿著偏好的路段行駛,或避開已知危險。
如果路線包含起點、一或多個中途路線控點和目的地,則只會包含一個路線路段,直接連結起點和目的地。
如要將中途路線控點設為經過路線控點,請在 REST Waypoint 資源或 gRPC Waypoint 訊息中,將路線控點的 via 屬性設為 true。
雖然 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 會內插並將位置貼齊至最近的可行駛道路。與精確座標相比,這種道路貼齊程序有時可能會導致路線變化或不準確。
如果您使用地址字串或 Plus Code 指定路線控點,API 會對該位置進行地理編碼,並在回應的 geocodingResults.intermediates 陣列中傳回相符的地點 ID。
針對 intermediates 陣列中的每個元素,使用 intermediateWaypointRequestIndex 屬性,判斷要求中的哪個中繼路線控點對應至回應中的地點 ID。
範例:要求中繼路線控點的地點 ID
以下範例顯示的要求包含三個中途路線控點,每個控點都指定 "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'
回應包含 geocodingResults 陣列,其中含有起點、目的地和兩個中間路線控點的地點 ID,這些地點是您在要求索引 0 和索引 2 中依地址指定。由於您使用經緯度座標指定索引 1 的中繼路線控點,因此 API 會從 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" } ] } }