L'ottimizzazione dei waypoint è una funzionalità preferita di Routes che estende
ComputeRoutes
.
Ottimizza l'ordine delle tappe intermedie del percorso di un viaggiatore,
assicurandosi che percorra il percorso più efficiente possibile. L'implementazione ComputeRoutes
dell'ottimizzazione delle tappe supporta le seguenti modalità di viaggio:
- In auto
- Moto a due ruote
- Ciclismo
- Camminata
Perché utilizzare l'ottimizzazione delle tappe?
Quando crei un'app che guidi gli utenti attraverso una serie di tappe lungo il percorso verso una destinazione, è importante che il viaggiatore attraversi le tappe nell'ordine ottimale. In questo modo, il viaggiatore arriverà a ogni tappa nel più breve tempo possibile.
Come funziona
Per impostazione predefinita, ComputeRoutes
calcola un percorso attraverso le relative tappe, nell'ordine
in cui erano originariamente forniti. Puoi ottenere ComputeRoutes
per ottimizzare il percorso riorganizzando le tappe intermedie in un ordine più efficiente.
Riceverai un percorso con tappe ottimizzate se imposti il campo optimizeWaypointOrder
nel corpo della richiesta su true
.
Nota: il calcolo dell'ottimizzazione delle tappe si basa principalmente sul tempo di percorrenza, ma la funzionalità prende in considerazione anche altri fattori, come la distanza e il numero di svolte.
Visualizza tappe riordinate
Per ottenere un percorso con tappe riordinate, imposta il campo booleano
optimizeWaypointOrder
su true
nel corpo della richiesta su
ComputeRoutes
. Includi anche il campo optimizedIntermediateWaypointIndex
nella maschera del campo. Il corpo della risposta contiene l'ordine dei waypoint ottimizzato
nei campi optimizedIntermediateWaypointIndex
.
Nota: il campo optimizedIntermediateWaypointIndex
restituisce valori in base zero.
Esempio di richiesta
La richiesta di esempio seguente fornisce un percorso vicino al campus della Stanford University. Le tappe del percorso sono state fornite in sequenza nella richiesta. La richiesta contiene un'origine e una destinazione, con due tappe intermedie.
POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
"origin":{
"location":{
"latLng":{
"latitude": 37.418956,
"longitude": -122.160815
}
}
},
"intermediates": [
{
"location":{
"latLng":{
"latitude": 37.4176423,
"longitude":-122.1102246
}
}
},
{
"location":{
"latLng":{
"latitude": 37.407689,
"longitude": -122.1360597
}
}
}
],
"destination":{
"location":{
"latLng":{
"latitude": 37.4032137,
"longitude": -122.0349119
}
}
},
"travelMode": "DRIVE",
"optimizeWaypointOrder": true,
"routingPreference": "TRAFFIC_AWARE"}
Esempio di risposta
Puoi trovare gli indici di waypoint intermedi riordinati nei campi optimizedIntermediateWaypointIndex
all'interno dell'oggetto route nel corpo della risposta. La polilinea codificata è la stessa dell'API Directions e di ComputeRoutes.
routes {
distance_meters: 17647
duration {
seconds: 1866
}
polyline {
encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
}
optimizedIntermediateWaypointIndex: 1
optimizedIntermediateWaypointIndex: 0
}
In questo esempio, nota che l'ottimizzazione delle tappe inverti l'ordine originale.
Pratiche consigliate
Una richiesta con tappe ottimizzate impiega più tempo a essere elaborata rispetto a una semplice richiesta di routing. Di conseguenza, ti consigliamo di impostare un timeout più elevato per la chiamata al metodo impostando un valore di almeno dieci secondi per l'intestazione della richiesta X-Server-Timeout
. Se continui a ricevere errori di timeout, puoi aggiungere un altro secondo e riprovare.
Limiti di utilizzo
Per utilizzare l'ottimizzazione delle tappe, devi rispettare le seguenti limitazioni e condizioni di utilizzo:
Puoi specificare il limite di utilizzo per le tappe intermedie lungo il percorso:
- Fino a 98 tappe utilizzando soltanto le coordinate di latitudine e longitudine.
- Fino a 25 tappe se specifichi le tappe utilizzando gli ID luogo.
Tutte le tappe devono essere del tipo stopover. Nessuno dei waypoint può essere del tipo tramite.
Devi aggiungere
routes.optimizedIntermediateWaypointIndex
alla maschera di campo.Se la richiesta include 25 o più tappe intermedie, deve anche rispettare le seguenti condizioni:
La distanza in rettilineo accumulata tra tutte le tappe deve essere inferiore a 1000 km. Questa distanza include sia il punto di partenza sia la destinazione.
La modalità di spostamento deve essere Drive.