Domyślnie interfejs API traktuje punkty pośrednie jako przystanki na trasie.
Możesz jednak skonfigurować punkt pośredni jako punkt pośredni via, przez który pojazd przejeżdża bez zatrzymywania się.
Użyj punktów pośrednich, aby ukształtować lub dostosować konkretną trasę. Zamiast dzielić trasę na osobne przystanki odbioru i wysiadania, punkt pośredni wymusza na silniku routingu przejazd przez określoną lokalizację w drodze do miejsca docelowego, np. aby podążać preferowanym odcinkiem drogi lub unikać znanego zagrożenia.
Trasa zawierająca miejsce początkowe, co najmniej 1 punkt pośredni i miejsce docelowe zawiera tylko 1 etap trasy , który łączy miejsce początkowe bezpośrednio z miejscem docelowym.
Aby skonfigurować punkt pośredni jako punkt pośredni, ustaw właściwość
via punktu pośredniego na true w zasobie Waypoint REST
Waypoint lub w wiadomości Waypoint gRPC
Waypoint.
Interfejs Routes API akceptuje adresy, identyfikatory miejsc oraz współrzędne geograficzne
, ale współrzędne geograficzne lub latLng, zapewniają
najdokładniejsze dostosowanie trasy w przypadku punktów pośrednich.
Właściwość via jest najbardziej skuteczna, gdy tworzysz trasy w odpowiedzi na przeciąganie punktów pośrednich na mapie. Dzięki temu możesz w czasie rzeczywistym zobaczyć, jak wygląda ostateczna trasa, i umieścić punkty pośrednie w dostępnych lokalizacjach.
Przykład: ustawianie punktu pośredniego
Poniższy przykład pokazuje, jak ustawić "via": true w punkcie pośrednim
w pełnym żądaniu POST computeRoutes:
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'
Używanie adresów lub identyfikatorów miejsc w przypadku punktów pośrednich
Chociaż w przypadku dokładnego routingu przez punkty pośrednie zalecamy używanie współrzędnych geograficznych, możesz też określić punkty pośrednie za pomocą ciągu adresu lub identyfikatora miejsca.
Gdy używasz adresu lub identyfikatora miejsca w przypadku punktu pośredniego, interfejs API interpoluje i przyciąga lokalizację do najbliższej drogi, po której można się poruszać. Ten proces przyciągania do drogi może czasami powodować różnice w trasie lub niedokładności w porównaniu z dokładnymi współrzędnymi.
Jeśli określisz punkt pośredni za pomocą ciągu adresu lub kodu plus, interfejs API
geokoduje lokalizację i zwraca pasujący identyfikator miejsca w
geocodingResults.intermediates
tablicy w odpowiedzi.
W przypadku każdego elementu w tablicy intermediates użyj właściwości intermediateWaypointRequestIndex, aby określić, który punkt pośredni w żądaniu odpowiada identyfikatorowi miejsca w odpowiedzi.
Przykład: żądanie identyfikatorów miejsc w przypadku punktów pośrednich
Poniższy przykład przedstawia żądanie z 3 punktami pośrednimi, z których każdy określa "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'
Odpowiedź zawiera tablicę geocodingResults zawierającą identyfikatory miejsc dla miejsca początkowego, miejsca docelowego i 2 punktów pośrednich określonych przez adres w indeksie żądania 0 i 2. Interfejs API pomija punkt pośredni w indeksie 1 z geocodingResults, ponieważ został on określony za pomocą współrzędnych geograficznych:
{ "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" } ] } }