Die Wegpunktoptimierung ist eine Funktion von Routes Preferred, die ComputeRoutes erweitert.
Die Reihenfolge der Zwischenwegpunkte auf der Route eines Reisenden wird optimiert, 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 ComputeRoutes die Route 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 Reisedauer, aber die Funktion berücksichtigt auch andere Faktoren wie die Entfernung und die Anzahl der Abzweige.
Neu sortierte Wegpunkte abrufen
Wenn Sie eine Route mit neu angeordneten Wegpunkten erhalten möchten, setzen Sie im Text Ihrer Anfrage an ComputeRoutes das boolesche Feld optimizeWaypointOrder 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 Zielort 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 Zwischenwegpunkt-Indizes 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. Setzen Sie dazu den Wert für den Anfrageheader X-Server-Timeout auf mindestens zehn Sekunden. 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.