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.
Best Practices
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.