Ottimizza i punti di percorso del percorso

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.

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.