Die Wegpunktoptimierung ist eine bevorzugte Funktion von Routes, die
ComputeRoutes erweitert.
Sie optimiert die Reihenfolge der Zwischenwegpunkte auf der Route eines Reisenden, sodass er die effizienteste Route zurücklegt. Die ComputeRoutes-Implementierung der Wegpunktoptimierung unterstützt die folgenden Reisemodi:
- Mit dem Auto
- Motorisiertes Zweirad
- Radfahren
- Zu Fuß
Warum Wegpunktoptimierung verwenden?
Wenn Sie eine App entwickeln, die Nutzer über eine Reihe von Wegpunkten zu einem Ziel führt, ist es wichtig, dass der Reisende die Wegpunkte in der optimalen Reihenfolge durchläuft. So kommt er in kürzester Zeit an jedem Wegpunkt an.
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 setzen.
Hinweis: Die Berechnung der Wegpunktoptimierung basiert hauptsächlich auf der Reisezeit. 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 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 Feldern optimizedIntermediateWaypointIndex.
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 sequenziell angegeben. Die Anfrage enthält einen Start- und einen Zielort mit zwei Zwischenwegpunkten.
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 Zwischenwegpunktindizes finden Sie in den Feldern optimizedIntermediateWaypointIndex im Objekt „routes“ 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
}
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 Routenanfrage. Wir empfehlen daher, 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 Zeitlimitfehler auftreten, können Sie eine weitere Sekunde hinzufügen und es noch einmal versuchen.
Nutzungseinschränkungen
Für die Verwendung der Wegpunktoptimierung müssen Sie die folgenden Nutzungseinschränkungen und ‑bedingungen einhalten:
Sie können bis zum Nutzungslimit für Zwischenwegpunkte auf Ihrer Route angeben:
- Bis zu 98 Wegpunkte nur mit Breiten- und Längengraden.
- Bis zu 25 Wegpunkte, wenn Sie Wegpunkte mit Orts-IDs angeben.
Alle Ihre 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 auch die folgenden Bedingungen erfüllt sein:
Die kumulierte Entfernung in 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.