Per impostazione predefinita, l'API tratta 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é suddividere il percorso in fermate di ritiro o consegna separate, un waypoint di transito forza il motore di routing a passare attraverso una posizione specifica lungo il percorso verso 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 pass-through 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 percorsi 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 di transito, l'API interpola e aggancia la località alla strada navigabile 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 geocodifica la 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 nell'indice della richiesta 0 e nell'indice 2. L'API omette il waypoint intermedio all'indice 1 da geocodingResults perché lo 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" } ] } }