Per impostazione predefinita, l'API considera i waypoint intermedi come tappe lungo un percorso.
Tuttavia, puoi configurare un waypoint intermedio come waypoint via
di transito in cui il veicolo passa senza fermarsi.
Utilizza i waypoint pass-through per modellare o modificare un percorso specifico. Anziché dividere l'itinerario in fermate di ritiro o rilascio separate, un waypoint di transito costringe il motore di routing a passare attraverso una posizione specifica sulla strada per la destinazione, ad esempio per seguire un segmento stradale preferito o evitare un pericolo noto.
Un itinerario contenente un'origine, uno o più waypoint intermedi di transito e una destinazione contiene solo un segmento di itinerario che collega l'origine direttamente alla destinazione.
Per configurare una tappa intermedia come tappa di transito, imposta la proprietà
via della tappa su true nella risorsa REST
Waypoint o nel messaggio gRPC
Waypoint.
Sebbene l'API Routes accetti indirizzi, ID luogo e coordinate di latitudine e longitudine, le coordinate di latitudine e longitudine o latLng forniscono gli aggiustamenti dell'itinerario più precisi per i waypoint pass-through.
La proprietà via è più efficace quando crei itinerari in risposta al trascinamento dei waypoint su una mappa. Questo approccio ti consente di vedere l'aspetto del percorso finale
in tempo reale e ti aiuta a posizionare i waypoint in posizioni accessibili.
Esempio: impostare un waypoint di transito
L'esempio seguente mostra come impostare "via": true su un waypoint intermedio in una richiesta POST computeRoutes completa:
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'
Utilizzo di indirizzi o ID luogo per i waypoint pass-through
Sebbene consigliamo le coordinate di latitudine e longitudine per un routing pass-through preciso, puoi anche specificare waypoint intermedi utilizzando una stringa di indirizzo o un ID luogo.
Quando utilizzi un indirizzo o un ID luogo per un waypoint pass-through, l'API interpola e allinea la posizione alla strada percorribile più vicina. Questo processo di snapping stradale a volte può comportare variazioni o imprecisioni dell'itinerario rispetto alle coordinate esatte.
Se specifichi un waypoint utilizzando una stringa di indirizzo o un Plus Code, l'API
esegue il geocoding della località e restituisce l'ID luogo corrispondente nell'array
geocodingResults.intermediates
nella risposta.
Per ogni elemento dell'array intermediates, utilizza la proprietà intermediateWaypointRequestIndex per determinare quale waypoint intermedio nella richiesta corrisponde all'ID luogo nella risposta.
Esempio: richiedere ID luogo per i waypoint pass-through
L'esempio seguente mostra una richiesta con tre waypoint intermedi pass-through, ognuno dei quali specifica "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'
La risposta include l'array geocodingResults contenente gli ID luogo per l'origine, la destinazione e i due waypoint intermedi specificati per indirizzo all'indice di richiesta 0 e all'indice 2. L'API omette il waypoint intermedio
all'indice 1 da geocodingResults perché l'hai specificato utilizzando
le coordinate di latitudine e longitudine:
{ "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" } ] } }