L'ottimizzazione dei waypoint è una funzionalità di Routes Preferred che estende
ComputeRoutes
.
Ottimizza l'ordine delle tappe intermedie nel percorso di un viaggiatore,
garantendo che percorra il percorso più efficiente possibile. L'implementazione dell'ottimizzazione dei waypoint supporta le seguenti modalità di viaggio:ComputeRoutes
- Auto
- Motocicli
- Ciclismo
- A piedi
Perché utilizzare l'ottimizzazione dei waypoint?
Quando crei un'app che guida gli utenti attraverso una serie di waypoint lungo il percorso verso una destinazione, è importante che il viaggiatore attraversi i waypoint nell'ordine ottimale. In questo modo, il viaggiatore arriva a ogni waypoint nel minor tempo possibile.
Come funziona
Per impostazione predefinita, ComputeRoutes
calcola un percorso attraverso i waypoint, nell'ordine
in cui sono stati forniti originariamente. Puoi ottenere ComputeRoutes
per ottimizzare
il percorso riorganizzando le tappe intermedie in un ordine più efficiente.
Riceverai un itinerario con waypoint ottimizzati se imposti il
campo optimizeWaypointOrder
nel corpo della richiesta su true
.
Nota: il calcolo dell'ottimizzazione dei waypoint si basa principalmente sul tempo di percorrenza, ma la funzionalità prende in considerazione anche altri fattori, come la distanza e il numero di svolte.
Recupera i waypoint riordinati
Per ottenere un itinerario con i waypoint riordinati, imposta il campo booleano
optimizeWaypointOrder
su true
nel corpo della richiesta a
ComputeRoutes
. Includi anche il campo optimizedIntermediateWaypointIndex
nella maschera del campo. Il corpo della risposta contiene l'ordine ottimizzato dei waypoint nei campi optimizedIntermediateWaypointIndex
.
Nota: il campo optimizedIntermediateWaypointIndex
restituisce valori
in base zero.
Esempio di richiesta
La seguente richiesta di esempio fornisce un percorso vicino al campus dell'Università di Stanford. I waypoint del percorso sono stati forniti in sequenza nella richiesta. La richiesta contiene un'origine e una destinazione, con due waypoint intermedi.
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 dei waypoint intermedi riordinati nei campi
optimizedIntermediateWaypointIndex
all'interno dell'oggetto routes 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 dei waypoint inverte il loro ordine originale.
Pratiche consigliate
L'elaborazione di una richiesta con tappe ottimizzate richiede più tempo rispetto a una semplice richiesta di routing. Pertanto, ti consigliamo di impostare un timeout più lungo per la chiamata al metodo
impostando un valore per l'intestazione della richiesta X-Server-Timeout
di almeno dieci
secondi. Se continui a ricevere errori di timeout, puoi aggiungere un altro secondo
e riprovare.
Limitazioni di utilizzo
Per utilizzare l'ottimizzazione delle tappe, devi rispettare le seguenti limitazioni e condizioni di utilizzo:
Puoi specificare fino al limite di utilizzo per i waypoint intermedi del tuo itinerario:
- Fino a 98 tappe utilizzando solo le coordinate di latitudine e longitudine.
- Fino a 25 tappe se ne specifichi utilizzando gli ID luogo.
Tutti i waypoint devono essere di tipo sosta. Nessuno dei tuoi waypoint può essere di tipo via.
Devi aggiungere
routes.optimizedIntermediateWaypointIndex
alla maschera del campo.Se la richiesta ha 25 o più tappe intermedie, deve rispettare anche le seguenti condizioni:
La distanza in linea retta accumulata tra tutti i waypoint deve essere inferiore a 1000 km. Questa distanza include sia l'origine che la destinazione.
La modalità di viaggio deve essere DRIVE.