Ottimizza i punti di percorso del percorso

L'ottimizzazione dei waypoint è una funzionalità Routes Preferred che estende ComputeRoutes Ottimizza l'ordine delle tappe intermedie nel percorso di un viaggiatore, assicurandosi che percorrano il percorso più efficiente possibile. ComputeRoutes l'implementazione dell'ottimizzazione delle tappe supporta le seguenti modalità di viaggio:

  • In auto
  • Moto a due ruote
  • Ciclismo
  • A piedi

Perché utilizzare l'ottimizzazione delle tappe?

Quando crei un'app che guidi gli utenti attraverso una serie di tappe lungo il percorso una destinazione, è importante che il viaggiatore attraversa le tappe della nell'ordine ottimale. In questo modo il viaggiatore arriva a ogni tappa del per un periodo di tempo minore.

Come funziona

Per impostazione predefinita, ComputeRoutes calcola un percorso attraverso le varie tappe, in ordine in cui erano originariamente forniti. Puoi ottenere ComputeRoutes per l'ottimizzazione il percorso riorganizzando le tappe intermedie in un ordine più efficiente. Riceverai un percorso con tappe ottimizzate se imposti le campo optimizeWaypointOrder nel corpo della richiesta a true.

Nota: il calcolo dell'ottimizzazione delle tappe si basa principalmente sul tempo di percorrenza, ma la caratteristica prende in considerazione anche altri fattori, come la distanza e il numero di turni.

Visualizza tappe riordinate

Per ottenere un percorso con tappe riordinate, imposta il campo booleano optimizeWaypointOrder a true nel corpo della richiesta di ComputeRoutes. Includi anche il campo optimizedIntermediateWaypointIndex nella maschera del campo. Il corpo della risposta contiene l'ordine dei waypoint ottimizzato i campi optimizedIntermediateWaypointIndex.

Nota: il campo optimizedIntermediateWaypointIndex restituisce in base zero. e i relativi valori.

Esempio di richiesta

La richiesta di esempio seguente fornisce una route vicino a Stanford Campus universitario. Le tappe del percorso sono state indicate in sequenza nel richiesta. La richiesta contiene un'origine e una destinazione, con due tappe.

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 waypoint intermedi riordinati nella optimizedIntermediateWaypointIndex campi all'interno dell'oggetto route nell' corpo della risposta. Il polilinea codificato è lo stesso utilizzato nell'API Directions e in 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 delle tappe inverti le fasi originali. ordine.

L'elaborazione di una richiesta con tappe ottimizzate richiede più tempo rispetto a un semplice routing richiesta. Di conseguenza, consigliamo di impostare un timeout più alto per la chiamata al metodo impostando un valore almeno dieci per l'intestazione della richiesta X-Server-Timeout secondi. Se continui a ricevere errori di timeout, puoi aggiungere un altro secondo e riprova.

Limiti di utilizzo

Per utilizzare l'ottimizzazione delle tappe, devi rispettare queste limitazioni di utilizzo e condizioni:

  • Puoi specificare fino al limite di utilizzo per i waypoint intermedi sul tuo percorso:

    • Fino a 98 tappe utilizzando soltanto le coordinate di latitudine e longitudine.
    • Fino a 25 tappe se specifichi le tappe utilizzando gli ID luogo.
  • Tutte le tappe devono essere del tipo stopover. Nessuna tappa può essere del tipo tramite.

  • Devi aggiungere routes.optimizedIntermediateWaypointIndex al campo mascherato.

  • Se la richiesta include 25 o più tappe intermedie, deve anche adempiere alle seguenti condizioni:

    • La distanza retta accumulata tra tutte le tappe deve essere meno di 1000 km. Questa distanza include sia l'origine che destinazione.

    • La modalità di spostamento deve essere Drive.