Die Wegpunktoptimierung ist eine Funktion von Routes Preferred, die ComputeRoutes erweitert.
Sie optimiert die Reihenfolge der Zwischenwegpunkte auf der Route eines Reisenden, damit er die effizienteste Route nimmt. Die ComputeRoutes-Implementierung der Wegpunktoptimierung unterstützt die folgenden Mobilitätsformen:
- Mit dem Auto
- Motorisiertes Zweirad
- Radfahren
- Zu Fuß
Vorteile der Wegpunktoptimierung
Wenn Sie eine App entwickeln, die Nutzer über mehrere Wegpunkte zu einem Ziel 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 die Route von ComputeRoutes optimieren lassen, indem die Zwischenwegpunkte in eine effizientere Reihenfolge gebracht werden.
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 Fahrzeit. Es werden aber auch andere Faktoren wie die Entfernung und die Anzahl der Abzweige berücksichtigt.
Neu sortierte Wegpunkte abrufen
Wenn Sie eine Route mit neu angeordneten Wegpunkten erhalten möchten, setzen Sie das boolesche Feld optimizeWaypointOrder im Text Ihrer Anfrage an 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
In der folgenden Beispielanfrage wird eine Route in der Nähe des Campus der Stanford University angegeben. Die Wegpunkte der Route wurden in der Anfrage nacheinander angegeben. Die Anfrage enthält einen Start- und einen Zielpunkt sowie zwei Zwischenwegpunkte.
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 Indexe der Zwischenwegpunkte finden Sie in den optimizedIntermediateWaypointIndex-Feldern im routes-Objekt im Antworttext. Die codierte Polylinie ist dieselbe wie in der Directions API und 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 diesem Beispiel wird die ursprüngliche Reihenfolge der Wegpunkte durch die Optimierung umgekehrt.
Best Practices
Die Verarbeitung einer Anfrage mit optimierten Wegpunkten dauert länger als die einer einfachen Routinganfrage. Daher empfehlen wir, für den Methodenaufruf ein höheres Zeitlimit festzulegen, indem Sie für den Anfrageheader X-Server-Timeout einen Wert von mindestens zehn Sekunden festlegen. Wenn weiterhin Zeitüberschreitungsfehler auftreten, können Sie eine weitere Sekunde hinzufügen und es dann noch einmal versuchen.
Nutzungseinschränkungen
Wenn Sie die Wegpunktoptimierung verwenden möchten, müssen Sie die folgenden Nutzungseinschränkungen und ‑bedingungen beachten:
Sie können bis zum Nutzungslimit für Zwischenwegpunkte auf Ihrer Route angeben:
- Bis zu 98 Wegpunkte, wenn nur Breiten- und Längengrade verwendet werden.
- Bis zu 25 Wegpunkte, wenn Sie Wegpunkte mit Orts-IDs angeben.
Alle Wegpunkte müssen vom Typ stopover sein. Keiner Ihrer Wegpunkte darf vom Typ via sein.
Sie müssen
routes.optimizedIntermediateWaypointIndexzur Feldmaske hinzufügen.Wenn Ihre Anfrage 25 oder mehr Zwischenwegpunkte enthält, müssen außerdem die folgenden Bedingungen erfüllt sein:
Die kumulierte Luftlinie zwischen allen Wegpunkten muss weniger als 1.000 km betragen. Diese Entfernung umfasst sowohl den Start- als auch den Zielort.
Der Reisemodus muss DRIVE sein.