Wegpunkte der Route optimieren

Die Wegpunktoptimierung ist eine bevorzugte Funktion für Routen, die ComputeRoutes erweitert. Dabei wird die Reihenfolge der Zwischenziele auf der Route eines Reisenden optimiert, damit er möglichst effizient unterwegs ist. Die ComputeRoutes-Implementierung der Wegpunktoptimierung unterstützt die folgenden Mobilitätsformen:

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

Vorteile der Wegpunktoptimierung

Wenn Sie eine App entwickeln, die Nutzer auf dem Weg zu einem Ziel durch eine Reihe von Wegpunkten führt, ist es wichtig, dass die Wegpunkte in der optimalen Reihenfolge durchlaufen werden. So wird sichergestellt, dass der Reisende jeden Wegpunkt in kürzester Zeit erreicht.

Funktionsweise

Standardmäßig berechnet ComputeRoutes eine Route über die Wegpunkte in der Reihenfolge, in der sie ursprünglich angegeben wurden. Sie können ComputeRoutes die Route optimieren lassen, indem Sie die Zwischenwegpunkte in eine effizientere Reihenfolge bringen. Sie erhalten eine Route mit optimierten Wegpunkten, wenn Sie das Feld optimizeWaypointOrder im Anfragetext auf true festlegen.

Hinweis: Die Berechnung der Wegpunktoptimierung basiert hauptsächlich auf der Fahrzeit. 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 erhalten möchten, setzen Sie das boolesche Feld optimizeWaypointOrder im Anfragetext auf true.ComputeRoutes Fügen Sie außerdem das Feld optimizedIntermediateWaypointIndex in die Feldmaske ein. Der Antworttext enthält die optimierte Wegpunktreihenfolge in den Feldern optimizedIntermediateWaypointIndex.

Hinweis: Das Feld optimizedIntermediateWaypointIndex gibt Werte ab null 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 nacheinander angegeben. Die Anfrage enthält einen Start- und einen Zielort mit zwei Zwischenpunkten.

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

Die neu angeordneten Zwischenpunktindexe finden Sie in den optimizedIntermediateWaypointIndex-Feldern im „routes“-Objekt im Antworttext. Die codierte Polylinie entspricht der in der Directions API und 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 diesem Beispiel wird durch die Optimierung der Wegpunkte ihre ursprüngliche Reihenfolge umgekehrt.

Die Verarbeitung einer Anfrage mit optimierten Wegpunkten dauert länger als die einer einfachen Routinganfrage. Wir empfehlen daher, für den Methodenaufruf ein längeres Zeitlimit festzulegen. Legen Sie dazu einen Wert für den X-Server-Timeout-Anfrageheader von mindestens zehn Sekunden fest. Wenn weiterhin Zeitüberschreitungsfehler auftreten, können Sie eine weitere Sekunde hinzufügen und es dann noch einmal versuchen.

Nutzungsbeschränkungen

Für die Verwendung der Wegpunktoptimierung gelten die folgenden Nutzungsbeschränkungen und -bedingungen:

  • Sie können bis zu der Nutzungsbeschränkung für Zwischenziele auf Ihrer Route angeben:

    • Bis zu 98 Wegpunkte mit nur Breiten- und Längengraden
    • Bis zu 25 Wegpunkte, wenn Sie Wegpunkte mit Orts-IDs angeben.
  • Alle Wegpunkte müssen vom Typ Aufenthalt sein. Keiner Ihrer Wegpunkte darf vom Typ über sein.

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

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

    • Die Gesamtstrecke zwischen allen Wegpunkten darf nicht mehr als 1.000 km betragen. Diese Entfernung umfasst sowohl den Start- als auch den Zielort.

    • Die Mobilitätsform muss „FAHREN“ sein.