Domyślnie interfejs API traktuje punkty pośrednie jako przystanki na trasie.
Możesz jednak skonfigurować punkt pośredni jako punkt, przez który pojazd przejeżdża bez zatrzymywania się.via
Używaj punktów pośrednich, aby kształtować lub dostosowywać konkretną trasę. Zamiast dzielić trasę na osobne przystanki odbioru lub wysiadania, punkt pośredni wymusza na silniku routingu przejazd przez określoną lokalizację w drodze do miejsca docelowego – na przykład w celu podążania preferowanym odcinkiem drogi lub uniknięcia znanego zagrożenia.
Trasa zawierająca miejsce początkowe, co najmniej 1 punkt pośredni i miejsce docelowe zawiera tylko 1 odcinek trasy, który łączy miejsce początkowe bezpośrednio z miejscem docelowym.
Aby skonfigurować punkt pośredni jako punkt, przez który chcesz przejechać, ustaw właściwość via punktu pośredniego na true w zasobie Waypoint interfejsu REST lub w komunikacie Waypoint interfejsu gRPC.
Interfejs Routes API akceptuje adresy, identyfikatory miejsc oraz współrzędne szerokości i długości geograficznej, ale współrzędne szerokości i długości geograficznej (latLng) zapewniają najbardziej precyzyjne 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 na mapie. Dzięki temu możesz zobaczyć, jak ostateczna trasa wygląda w czasie rzeczywistym, i umieścić punkty orientacyjne w dostępnych miejscach.
Przykład: ustawianie punktu pośredniego, przez który chcesz przejechać
Ten 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
Zalecamy używanie współrzędnych szerokości i długości geograficznej, aby uzyskać precyzyjne trasy przelotowe, ale możesz też określić punkty pośrednie, używając ciągu adresu lub identyfikatora miejsca.
Gdy używasz adresu lub identyfikatora miejsca jako punktu pośredniego, interfejs API interpoluje i przyciąga lokalizację do najbliższej drogi, po której można się poruszać. Ten proces dopasowywania 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 Plus Code, interfejs API geokoduje lokalizację i zwraca pasujący identyfikator miejsca w tablicy geocodingResults.intermediates 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, przez które chcesz przejechać
Poniższy przykład pokazuje żądanie z 3 pośrednimi punktami orientacyjnymi, 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 z identyfikatorami miejsc dla miejsca początkowego, miejsca docelowego i 2 punktów pośrednich, które zostały określone przez adres w indeksie żądania 0 i indeksie 2. Interfejs API pomija pośredni punkt na trasie o indeksie 1 z geocodingResults, ponieważ został on określony za pomocą współrzędnych geograficznych: szerokości i długości geograficznej.
{ "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" } ] } }