Wegpunkte der Route optimieren

Die Wegpunktoptimierung ist eine Funktion von „Routes Preferred“, die ComputeRoutes erweitert. Die Reihenfolge der Wegpunkte auf der Route eines Reisenden wird optimiert, damit die Route so effizient wie möglich zurückgelegt wird. Die ComputeRoutes-Implementierung der Wegpunktoptimierung unterstützt die folgenden Mobilitätsformen:

  • Mit dem Auto
  • Zweiräder mit Motor
  • Radfahren
  • Spazierengehen

Vorteile der Wegpunktoptimierung

Wenn Sie eine App erstellen, die Nutzer auf dem Weg zu einem Ziel durch eine Reihe von Wegpunkten führt, ist es wichtig, dass der Nutzer die Wegpunkte in der optimalen Reihenfolge durchquert. So kommt der Nutzer in kürzester Zeit zu jedem Wegpunkt an.

Funktionsweise

Standardmäßig wird mit ComputeRoutes eine Route durch ihre Wegpunkte in der Reihenfolge berechnet, in der sie ursprünglich angegeben wurden. Durch ComputeRoutes optimieren Sie die Route, indem Sie die Wegpunkte in eine effizientere Reihenfolge bringen. Sie erhalten eine Route mit optimierten Wegpunkten, wenn Sie das Feld optimizeWaypointOrder im Anfragetext auf true setzen.

Hinweis: Die Berechnung der Wegpunktoptimierung basiert hauptsächlich auf der Fahrtzeit. Die Funktion berücksichtigt aber auch andere Faktoren wie die Entfernung und die Anzahl der Abzweigungen.

Neu angeordnete Wegpunkte abrufen

Wenn Sie eine Route mit neu angeordneten Wegpunkten abrufen möchten, setzen Sie das boolesche Feld optimizeWaypointOrder im Text Ihrer Anfrage auf ComputeRoutes auf true. Fügen Sie außerdem das Feld optimizedIntermediateWaypointIndex in die Feldmaske ein. Der Antworttext enthält die optimierte Wegpunktreihenfolge in den optimizedIntermediateWaypointIndex-Feldern.

Hinweis: Das Feld optimizedIntermediateWaypointIndex gibt nullbasierte Werte zurück.

Beispielanfrage

Die folgende Beispielanfrage liefert eine Route in der Nähe des Campus der Stanford University. Die Wegpunkte der Route wurden in der Anfrage der Reihe nach angegeben. Die Anfrage enthält einen Start- und einen Zielort sowie zwei Wegpunkte.

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"}

Beispielantwort

Sie finden die neu angeordneten Wegpunktindexe in den optimizedIntermediateWaypointIndex-Feldern des Objekts „routes“ im Antworttext. Die codierte Polylinie ist mit der in der Directions API und ComputeRoutes identisch.

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 diesem Beispiel wird durch das Optimieren der Wegpunkte ihre ursprüngliche Reihenfolge umgekehrt.

Eine Anfrage mit optimierten Wegpunkten dauert länger als eine einfache Routinganfrage. Daher empfehlen wir, ein höheres Zeitlimit für den Methodenaufruf festzulegen. Dazu legen Sie für den Anfrageheader X-Server-Timeout mindestens zehn Sekunden fest. Wenn Sie weiterhin Zeitüberschreitungsfehler erhalten, können Sie eine weitere Sekunde hinzufügen und es dann noch einmal versuchen.

Nutzungsbeschränkungen

Wenn Sie die Wegpunktoptimierung verwenden möchten, müssen Sie die folgenden Nutzungsbeschränkungen und -bedingungen beachten:

  • Sie können für Wegpunkte auf Ihrer Route bis zum Nutzungslimit angeben:

    • Bis zu 98 Wegpunkte, für die nur Breiten- und Längengrade verwendet werden
    • Bis zu 25 Wegpunkte, wenn Sie Wegpunkte mithilfe von Orts-IDs angeben.
  • Alle Wegpunkte müssen den Typ stopover haben. Keiner Ihrer Wegpunkte darf den Typ via haben.

  • Sie müssen der Feldmaske routes.optimizedIntermediateWaypointIndex hinzufügen.

  • Wenn Ihre Anfrage 25 oder mehr Zwischenwegpunkte enthält, müssen außerdem die folgenden Bedingungen erfüllt sein:

    • Die kumulierte Luftstrecke zwischen allen Wegpunkten muss kleiner als 1.000 km sein. Diese Entfernung umfasst sowohl den Start- als auch den Zielort.

    • Die Mobilitätsform muss DRIVE lauten.