Standardmäßig werden Zwischenziele in der API als Stopps auf einer Route behandelt.
Sie können einen Zwischenstopp jedoch als via-Durchgangspunkt konfigurieren, an dem das Fahrzeug nicht anhält.
Mithilfe von Durchgangspunkten können Sie eine bestimmte Route anpassen. Anstatt die Route in separate Abhol- oder Absetzpunkte aufzuteilen, wird die Routing-Engine durch einen Durchgangswegpunkt gezwungen, auf dem Weg zum Ziel einen bestimmten Ort zu passieren, z. B. um einem bevorzugten Straßensegment zu folgen oder eine bekannte Gefahr zu vermeiden.
Eine Route mit einem Startpunkt, einem oder mehreren Zwischenwegpunkten und einem Ziel enthält nur einen Routenabschnitt, der den Startpunkt direkt mit dem Ziel verbindet.
Wenn Sie einen Zwischenwegpunkt als Durchgangswegpunkt konfigurieren möchten, setzen Sie das Attribut via des Wegpunkts entweder in der REST-Ressource Waypoint oder in der gRPC-Nachricht Waypoint auf true.
In der Routes API können Adressen, Orts-IDs sowie Breiten- und Längengradkoordinaten verwendet werden. Breiten- und Längengradkoordinaten oder latLng-Koordinaten ermöglichen jedoch die präzisesten Routenanpassungen für Durchgangs-Wegpunkte.
Die via-Eigenschaft ist am effektivsten, wenn Sie Routen als Reaktion auf das Ziehen von Wegpunkten auf einer Karte erstellen. So können Sie in Echtzeit sehen, wie die endgültige Route aussieht, und Wegpunkte an zugänglichen Orten platzieren.
Beispiel: Pass-through-Wegpunkt festlegen
Im folgenden Beispiel wird gezeigt, wie "via": true für einen Zwischenstopp in einer vollständigen computeRoutes-POST-Anfrage festgelegt wird:
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'
Adressen oder Orts-IDs für Durchgangswegpunkte verwenden
Wir empfehlen zwar, Breiten- und Längengradkoordinaten für das genaue Durchschleusen von Routen zu verwenden, Sie können aber auch Zwischenziele mit einem Adressstring oder einer Orts-ID angeben.
Wenn Sie eine Adresse oder Orts-ID für einen Zwischenwegpunkt verwenden, interpoliert die API den Standort und fängt ihn an der nächstgelegenen befahrbaren Straße ein. Dieser Prozess kann manchmal zu Abweichungen oder Ungenauigkeiten bei der Route im Vergleich zu den genauen Koordinaten führen.
Wenn Sie einen Wegpunkt mit einem Adressstring oder Plus Code angeben, geocodiert die API den Ort und gibt die entsprechende Orts-ID im Array geocodingResults.intermediates in der Antwort zurück.
Verwenden Sie für jedes Element im intermediates-Array die Property intermediateWaypointRequestIndex, um zu bestimmen, welcher Zwischenwegpunkt in der Anfrage der Orts-ID in der Antwort entspricht.
Beispiel: Orts-IDs für Pass-Through-Wegpunkte anfordern
Das folgende Beispiel zeigt eine Anfrage mit drei Zwischenwegpunkten, für die jeweils "via": true angegeben ist:
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'
Die Antwort enthält das geocodingResults-Array mit den Orts-IDs für den Startort, den Zielort und die beiden Zwischenwegpunkte, die Sie im Anfrageindex 0 und Index 2 nach Adresse angegeben haben. Die API lässt den Zwischenstopp bei Index 1 aus geocodingResults aus, da Sie ihn mit Breiten- und Längengradkoordinaten angegeben haben:
{ "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" } ] } }