Die Optimierung von Wegpunkten 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
- Motorradfahren
- Radfahren
- Zu Fuß
Warum sollte ich die Wegpunktoptimierung verwenden?
Wenn Sie eine App entwickeln, die Nutzer auf dem Weg zu einem Ziel durch eine Reihe von Wegpunkten 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 abrufen, um die Route zu optimieren, 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 in erster Linie auf der Fahrzeit. Es werden aber auch andere Faktoren wie die Entfernung und die Anzahl der Abzweigungen berücksichtigt.
Neu angeordnete Wegpunkte abrufen
Wenn Sie eine Route mit neu angeordneten Wegpunkten abrufen 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
Im folgenden Beispiel wird eine Route in der Nähe des Campus der Stanford University angefordert. Die Wegpunkte der Route wurden sequenziell in der Anfrage 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 sortierten Indexe für Zwischenziele finden Sie im Antworttext in den Feldern optimizedIntermediateWaypointIndex im Routenobjekt. 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 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
Für die Verwendung der Wegpunktoptimierung gelten die folgenden Nutzungsbeschränkungen und ‑bedingungen:
Sie können bis zum Nutzungslimit Zwischenziele für Ihre Route angeben:
- Bis zu 98 Wegpunkte nur mit Breiten- und Längengradkoordinaten.
- 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.optimizedIntermediateWaypointIndexder Feldmaske hinzufügen.Wenn Ihre Anfrage 25 oder mehr Zwischenziele enthält, muss sie auch die folgenden Bedingungen erfüllen:
Die kumulierte Luftlinie zwischen allen Wegpunkten darf nicht mehr als 1.000 km betragen. Diese Entfernung umfasst sowohl den Start- als auch den Zielort.
Die Mobilitätsform muss „AUTO“ sein.