L'ottimizzazione dei waypoint è una funzionalità di Routes Preferred che si estende per
ComputeRoutes
.
Ottimizza l'ordine dei waypoint intermedi nel percorso di un viaggiatore, assicurandosi che percorri il percorso più efficiente possibile. L'implementazione ComputeRoutes
dell'ottimizzazione dei tappe supporta le seguenti modalità di viaggio:
- In auto
- Motociclo
- In bicicletta
- Passeggiate
Perché utilizzare l'ottimizzazione dei waypoint?
Quando crei un'app che guida gli utenti attraverso una serie di tappe sul percorso verso una destinazione, è importante che il viaggiatore le attraversi nell'ordine ottimale. Ciò garantisce che il viaggiatore arrivi a ogni tappa nel breve periodo di tempo.
Come funziona
Per impostazione predefinita, ComputeRoutes
calcola un percorso tramite i relativi waypoint, nell'ordine
in cui erano stati originariamente forniti. Puoi ottenere ComputeRoutes
per ottimizzare 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.
Visualizza waypoint riordinati
Per ottenere un percorso con waypoint riordinati, imposta il campo booleano
optimizeWaypointOrder
su true
nel corpo della richiesta su
ComputeRoutes
. Inoltre, includi 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. I waypoint del percorso sono stati specificati 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 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, puoi notare che 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. Di conseguenza, ti consigliamo di impostare un timeout più elevato per la chiamata al metodo impostando un valore di almeno 10 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 dei waypoint, devi rispettare le seguenti limitazioni e condizioni di utilizzo:
Puoi specificare fino al limite di utilizzo per i waypoint intermedi sul tuo percorso:
- Fino a 98 tappe utilizzando solo le coordinate di latitudine e longitudine.
- Fino a 25 waypoint se specifichi qualsiasi waypoint utilizzando gli ID luogo.
Tutti i waypoint devono essere di 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ù waypoint intermedi, deve soddisfare anche le seguenti condizioni:
La distanza in linea retta accumulata tra tutti i waypoint deve essere inferiore a 1000 km. Questa distanza include sia il luogo di partenza sia la destinazione.
La modalità di viaggio deve essere Drive.