Per impostazione predefinita, l'API Routes restituisce la route predefinita, che in genere è la route più veloce dall'origine alla destinazione. Quando richiedi route alternative, l'API restituisce fino a tre route insieme a quella predefinita. I clienti potranno quindi scegliere il percorso più adatto alle loro esigenze.
Considerazioni sulla richiesta di percorsi alternativi
Per richiedere route alternative, tieni presente le seguenti considerazioni:
Puoi richiedere route alternative solo per le route senza waypoint intermedi. La richiesta di route alternative quando la route specifica tappe intermedie non provoca un errore. Tuttavia, non vengono restituite route alternative.
La risposta contiene un massimo di tre route alternative. Tuttavia, a volte non sono disponibili route alternative, quindi la risposta contiene solo la route predefinita.
A causa dell'elaborazione aggiuntiva necessaria per calcolare le route alternative, la richiesta di route alternative potrebbe aumentare il tempo di risposta dell'API.
Esempio di richiesta di route alternative
Imposta computeAlternativeRoutes
su true
per richiedere percorsi alternativi. L'esempio seguente mostra come richiedere route alternative in una richiesta di metodo computeRoutes (REST).
curl -X POST -d '{ "origin":{ "location":{ "latLng":{ "latitude":42.340173523716736, "longitude":-71.05997968330408 } } }, "destination":{ "location":{ "latLng":{ "latitude":42.075698891472804, "longitude": -72.59806562080408 } } }, "travelMode": "DRIVE", "routingPreference":"TRAFFIC_AWARE", "computeAlternativeRoutes": true }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
In questo esempio, specifichi una maschera del campo in modo che la risposta contenga solo le
proprietà duration
, distanceMeters,
e routeLabels
per ogni route. Il cliente potrà quindi utilizzare queste informazioni per scegliere il percorso da intraprendere. Per ulteriori
informazioni, vedi Scegliere le informazioni da restituire.
Esempio di risposta di route alternative
Nella risposta, utilizza la proprietà array routeLabels
per identificare il percorso di copertura:
Per il percorso predefinito, la proprietà
routeLabels
contieneDEFAULT_ROUTE
.Per tutti i percorsi alternativi, la proprietà
routeLabels
contieneDEFAULT_ROUTE_ALTERNATE
.
In questo esempio, la risposta contiene la route predefinita e due route alternative. Tieni presente che i valori delle proprietà duration
e distanceMeters
sono diversi per ogni route:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }
Includere le polilinee nella risposta
Per consentire all'utente di selezionare più facilmente la route, aggiungi alla risposta la polilinea per ogni route. Puoi quindi visualizzare ogni polilinea su una mappa.
Per aggiungere la polilinea, includi routes.polyline
nella maschera del campo:
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'
La risposta contiene quindi la polilinea per ciascuna route:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "polyline": { "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "polyline": { "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "polyline": { "encodedPolyline": "FVLL|Af@HPAV…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }