L'ottimizzazione dei waypoint è una funzionalità di Percorsi preferiti che amplia ComputeRoutes
.
Ottimizza l'ordine delle tappe intermedie nel percorso di un viaggiatore,
assicurando che percorra il percorso più efficiente possibile. L'ComputeRoutes
implementazione dell'ottimizzazione dei waypoint supporta le seguenti modalità di viaggio:
- In auto
- Veicoli a due ruote motorizzati
- 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 li attraversi nell'ordine ottimale. In questo modo, il viaggiatore arriva a ogni waypoint nel meno tempo possibile.
Come funziona
Per impostazione predefinita, ComputeRoutes
calcola un percorso tramite i suoi waypoint nell'ordine in cui sono stati forniti in origine. Puoi chiedere a ComputeRoutes
di ottimizzare il percorso riordinando le tappe intermedie in un ordine più efficiente.
Riceverai un itinerario con punti di passaggio 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.
Visualizzare i waypoint riordinati
Per ottenere un itinerario con i waypoint riordinati, imposta il campo booleano
optimizeWaypointOrder
su true
nel corpo della richiesta su
ComputeRoutes
. Includi anche il campo optimizedIntermediateWaypointIndex
nella maschera di campo. Il corpo della risposta contiene l'ordine dei punti di passaggio ottimizzati nei campi optimizedIntermediateWaypointIndex
.
Nota: il campo optimizedIntermediateWaypointIndex
restituisce valori basati su zero.
Richiesta di esempio
La richiesta di esempio seguente fornisce un itinerario vicino al campus della Università di Stanford. I waypoint del percorso sono stati forniti in sequenza nella richiesta. La richiesta contiene un punto di partenza e un punto di 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. Il
polilinea codificato
è lo stesso usato in
API Directions e
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, tieni presente che l'ottimizzazione dei waypoint ne inverte l'ordine originale.
Pratiche consigliate
L'elaborazione di una richiesta con waypoint ottimizzati richiede più tempo rispetto a una semplice richiesta di calcolo itinerario. 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
di almeno dieci secondi. Se continui a ricevere errori di timeout, puoi aggiungere un altro secondo
e riprovare.
Limitazioni d'uso
Per utilizzare l'ottimizzazione dei waypoint, devi rispettare queste limitazioni e condizioni di utilizzo:
Puoi specificare fino al limite di utilizzo per i waypoint intermedi nel percorso:
- Fino a 98 waypoint utilizzando solo le coordinate di latitudine e longitudine.
- Fino a 25 waypoint se ne specifichi utilizzando gli ID luogo.
Tutti i waypoint devono essere di tipo stopover. Nessuno dei tuoi waypoint può essere di tipo via.
Devi aggiungere
routes.optimizedIntermediateWaypointIndex
alla maschera del campo.Se la richiesta contiene almeno 25 waypoint intermedi, deve anche essere conforme alle seguenti condizioni:
La distanza in linea retta accumulata tra tutti i waypoint deve essere inferiore a 1000 km. Questa distanza include sia la partenza sia la destinazione.
La modalità di viaggio deve essere AUTO.