L'ottimizzazione dei waypoint è una funzionalità di Routes Preferred che estende
ComputeRoutes.
Ottimizza l'ordine delle tappe intermedie nel percorso di un viaggiatore, assicurando che segua il percorso più efficiente possibile. L'implementazione dell'ottimizzazione dei waypoint di ComputeRoutes supporta le seguenti modalità di viaggio:
- Auto
- Motociclo
- Ciclismo
- A piedi
Perché utilizzare l'ottimizzazione dei waypoint?
Quando crei un'app che guida 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 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 fare in modo che ComputeRoutes ottimizzi
il percorso riorganizzando i waypoint intermedi in un ordine più efficiente.
Riceverai un percorso 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.
Ottieni waypoint riordinati
Per ottenere un percorso con waypoint riordinati, imposta il campo booleano optimizeWaypointOrder su true nel corpo della richiesta a ComputeRoutes. Includi anche il campo optimizedIntermediateWaypointIndex nella maschera di campo. Il corpo della risposta contiene l'ordine ottimizzato dei waypoint nei campi optimizedIntermediateWaypointIndex.
Nota: il campo optimizedIntermediateWaypointIndex restituisce valori basati su zero.
Esempio di richiesta
La seguente richiesta di esempio fornisce un percorso vicino al campus della Stanford University. 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 polyline 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, l'ottimizzazione dei waypoint inverte l'ordine originale.
Pratiche consigliate
L'elaborazione di una richiesta con waypoint ottimizzati richiede più tempo rispetto a una semplice richiesta di routing. Pertanto, ti consigliamo di impostare un timeout più elevato per la chiamata al metodo impostando un valore per l'intestazione della richiesta X-Server-Timeout su almeno dieci secondi. Se continui a ricevere errori di timeout, puoi aggiungere un altro secondo e riprovare.
Limiti di utilizzo
Per utilizzare l'ottimizzazione dei waypoint, devi rispettare le seguenti limitazioni e condizioni di utilizzo:
Puoi specificare fino al limite di utilizzo per i waypoint intermedi del tuo percorso:
- Fino a 98 waypoint utilizzando solo le coordinate di latitudine e longitudine.
- Fino a 25 tappe se specifichi le tappe utilizzando gli ID luogo.
Tutti i waypoint devono essere di tipo stopover. Nessuno dei waypoint può essere di tipo via.
Devi aggiungere
routes.optimizedIntermediateWaypointIndexalla maschera di campo.Se la richiesta contiene 25 o più tappe intermedie, deve anche rispettare 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.