Standardmäßig behandelt die API Zwischenwegpunkte als Haltestellen auf einer Route.
Sie können einen Zwischenwegpunkt jedoch als via-Wegpunkt konfigurieren, an dem das Fahrzeug ohne anzuhalten vorbeifährt.
Mit `via`-Wegpunkten können Sie eine bestimmte Route gestalten oder anpassen. Anstatt die Route in separate Abhol- oder Absetzpunkte aufzuteilen, zwingt ein `via`-Wegpunkt die Routing-Engine, auf dem Weg zum Ziel einen bestimmten Ort zu passieren. So kann beispielsweise ein bevorzugter Straßenabschnitt gefahren oder eine bekannte Gefahrenstelle umgangen werden.
Eine Route mit einem Startpunkt, einem oder mehreren `via`-Zwischenwegpunkten und einem Ziel enthält nur einen Routenabschnitt , der den Startpunkt direkt mit dem Ziel verbindet.
Wenn Sie einen Zwischenwegpunkt als `via`-Wegpunkt konfigurieren möchten, legen Sie die
via Eigenschaft des Wegpunkts auf true entweder in der REST
Waypoint Ressource oder der gRPC
Waypoint Nachricht fest.
Die Routes API akzeptiert Adressen, Orts-IDs sowie Breiten- und Längengrade
. Breiten- und Längengrade oder latLngKoordinaten ermöglichen jedoch die
präzisesten Routenanpassungen für `via`-Wegpunkte.
Die Eigenschaft via ist am effektivsten, wenn Sie Routen erstellen, indem Sie Wegpunkte auf einer Karte ziehen. So können Sie in Echtzeit sehen, wie die endgültige Route aussieht, und Wegpunkte an zugänglichen Orten platzieren.
Beispiel: `via`-Wegpunkt festlegen
Im folgenden Beispiel wird gezeigt, wie Sie "via": true für einen Zwischen
wegpunkt in einer vollständigen computeRoutes POST-Anfrage festlegen:
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 `via`-Wegpunkte verwenden
Wir empfehlen zwar, für ein präzises `via`-Routing Breiten- und Längengrade zu verwenden, Sie können Zwischenwegpunkte aber auch mit einem Adressstring oder einer Orts-ID angeben.
Wenn Sie eine Adresse oder Orts-ID für einen `via`-Wegpunkt verwenden, interpoliert die API den Standort und richtet ihn an der nächstgelegenen befahrbaren Straße aus. Dieser Vorgang kann im Vergleich zu genauen Koordinaten zu Routenabweichungen oder Ungenauigkeiten führen.
Wenn Sie einen Wegpunkt mit einem Adressstring oder Plus Code angeben, geocodiert die API
den Standort und gibt die entsprechende Orts-ID in der
geocodingResults.intermediates
im Array in der Antwort zurück.
Verwenden Sie für jedes Element im Array intermediates die Eigenschaft intermediateWaypointRequestIndex, um zu ermitteln, welcher Zwischenwegpunkt in der Anfrage der Orts-ID in der Antwort entspricht.
Beispiel: Orts-IDs für `via`-Wegpunkte anfordern
Das folgende Beispiel zeigt eine Anfrage mit drei `via`-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 Array geocodingResults mit den Orts-IDs für den Startpunkt, das Ziel und die beiden Zwischenwegpunkte, die Sie in der Anfrage an den Indexpositionen 0 und 2 per Adresse angegeben haben. Die API lässt den Zwischenwegpunkt an Indexposition 1 in geocodingResults aus, da Sie ihn mit Breiten- und Längengraden 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" } ] } }