Wegpunkte der Route optimieren

Die Wegpunktoptimierung ist eine Funktion von „Routes Preferred“, die auch ComputeRoutes erweitert. Dabei wird die Reihenfolge der Zwischenwegpunkte auf der Route eines Reisenden optimiert, damit die effizienteste Route verwendet wird. Die ComputeRoutes-Implementierung der Wegpunktoptimierung unterstützt die folgenden Mobilitätsformen:

  • Autofahren
  • Motorisiertes Zweirad
  • Radfahren
  • Spazierengehen

Vorteile der Wegpunktoptimierung

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

Funktionsweise

Standardmäßig berechnet ComputeRoutes eine Route anhand ihrer Wegpunkte in der Reihenfolge, in der sie ursprünglich angegeben wurden. Sie können ComputeRoutes abrufen, um die Route zu optimieren. Dazu ordnen Sie die Wegpunkte in einer effizienteren Reihenfolge an. Sie erhalten eine Route mit optimierten Wegpunkten, wenn Sie das Feld optimizeWaypointOrder im Anfragetext auf true setzen.

Hinweis: Die Berechnung der Wegpunktoptimierung basiert in erster Linie auf der Reisezeit. Es werden aber auch andere Faktoren wie die Entfernung und die Anzahl der Abzweigungen berücksichtigt.

Neu angeordnete Wegpunkte abrufen

Um eine Route mit neu angeordneten Wegpunkten zu erhalten, setzen Sie das boolesche Feld optimizeWaypointOrder auf true im Text Ihrer Anfrage auf ComputeRoutes. 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

Im folgenden Beispiel wird eine Route in der Nähe des Campus der Stanford University bereitgestellt. Die Wegpunkte der Route wurden der Reihe nach in der Anfrage angegeben. Die Anfrage enthält einen Start- und einen Zielort mit zwei Wegpunkten.

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 Wegpunktindexe finden Sie in den optimizedIntermediateWaypointIndex-Feldern im Routenobjekt im Antworttext. Die codierte Polylinie ist dieselbe wie 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
}

Beachten Sie in diesem Beispiel, dass durch die Optimierung der Wegpunkte ihre ursprüngliche Reihenfolge umgekehrt wird.

Die Verarbeitung einer Anfrage mit optimierten Wegpunkten dauert länger als eine einfache Routinganfrage. Daher empfehlen wir, ein höheres Zeitlimit für den Methodenaufruf festzulegen. Legen Sie dazu für den X-Server-Timeout-Anfrageheader einen Wert 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

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

  • Sie können das Nutzungslimit für Wegpunkte auf Ihrer Route festlegen:

    • Bis zu 98 Wegpunkte dürfen nur aus Breiten- und Längengraden bestehen.
    • Bis zu 25 Wegpunkte, wenn Sie Wegpunkte mithilfe von Orts-IDs angeben.
  • Alle Wegpunkte müssen vom Typ stopover sein. Keiner Ihrer Wegpunkte darf vom Typ via sein.

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

  • Wenn Ihre Anfrage 25 oder mehr Wegpunkte hat, muss sie außerdem die folgenden Bedingungen erfüllen:

    • Die kumulierte Luftlinienentfernung 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 sein.