Per impostazione predefinita, le tappe intermedie vengono utilizzate per le soste per i ritiri e le consegne, ma puoi anche specificare che una tappa intermedia è pensata solo per il passaggio.
Un itinerario che contiene un waypoint di partenza, un waypoint intermedio di transito e un waypoint di destinazione contiene un solo segmento di itinerario che collega la partenza e la destinazione, passando per il waypoint intermedio (chiamato via
).
Configura una tappa intermedia in modo che sia una tappa di passaggio impostando la proprietà via
della tappa su true
utilizzando Waypoint (REST) o Waypoint (gRPC).
La proprietà via
è più efficace quando si creano percorsi in risposta al trascinamento dei waypoint sulla mappa da parte dell'utente. In questo modo, l'utente può vedere come
potrebbe apparire l'itinerario finale in tempo reale e contribuisce a garantire che i waypoint siano posizionati
in posizioni accessibili a Compute Routes.
Il seguente esempio mostra come contrassegnare un waypoint intermedio come waypoint pass-through.
{ "location": { "latLng": { "latitude":37.419734, "longitude":-122.0827784 } }, "via": true }
Accedere agli ID luogo per le tappe intermedie
Se specifichi la posizione di un'origine, una destinazione o un waypoint intermedio
come stringa di indirizzo o come plus code, l'API tenta di trovare
la posizione più pertinente con un ID luogo corrispondente. L'array
geocodingResults.intermediates
nei risultati contiene l'ID luogo corrispondente alla posizione dei
waypoint, insieme a dati aggiuntivi sulla posizione.
Per ogni elemento dell'array intermediates
, utilizza la proprietà intermediateWaypointRequestIndex
per determinare quale waypoint intermedio nella richiesta corrisponde all'ID luogo nella risposta.
Ad esempio:
Specifichi tre tappe intermedie in una richiesta. Due di questi waypoint sono specificati da stringhe di indirizzi e uno da coordinate di latitudine/longitudine.
Includi
geocodingResults
nella maschera del campo di risposta per specificare di restituire l'arraygeocodingResults
nei risultati.
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" }, { "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0807784 } } }, { "address": "1836 El Camino Real, Redwood City, CA 94063" } ], "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'
La risposta include l'array geocodingResults
contenente l'ID luogo per l'origine, la destinazione e due dei tre waypoint. Questi sono i
waypoint agli indici 0 e 2 della richiesta. Poiché il waypoint all'indice 1 della richiesta è stato specificato utilizzando le coordinate di latitudine/longitudine, viene omesso dall'array geocodingResults
nella risposta.
{ "routes": [{...}], "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" } ] } }