Die Wegpunktoptimierung ist eine Funktion von „Routes Preferred“, die ComputeRoutes
erweitert.
Die Reihenfolge der Wegpunkte auf der Route eines Reisenden wird optimiert, damit die Route so effizient wie möglich zurückgelegt wird. Die ComputeRoutes
-Implementierung der Wegpunktoptimierung unterstützt die folgenden Mobilitätsformen:
- Mit dem Auto
- Zweiräder mit Motor
- Radfahren
- Spazierengehen
Vorteile der Wegpunktoptimierung
Wenn Sie eine App erstellen, die Nutzer auf dem Weg zu einem Ziel durch eine Reihe von Wegpunkten führt, ist es wichtig, dass der Nutzer die Wegpunkte in der optimalen Reihenfolge durchquert. So kommt der Nutzer in kürzester Zeit zu jedem Wegpunkt an.
Funktionsweise
Standardmäßig wird mit ComputeRoutes
eine Route durch ihre Wegpunkte in der Reihenfolge berechnet, in der sie ursprünglich angegeben wurden. Durch ComputeRoutes
optimieren Sie die Route, indem Sie die Wegpunkte 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 Fahrtzeit. 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 abrufen möchten, setzen Sie das boolesche Feld optimizeWaypointOrder
im Text Ihrer Anfrage auf 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
Die folgende Beispielanfrage liefert eine Route in der Nähe des Campus der Stanford University. Die Wegpunkte der Route wurden in der Anfrage der Reihe nach angegeben. Die Anfrage enthält einen Start- und einen Zielort sowie zwei Wegpunkte.
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
Sie finden die neu angeordneten Wegpunktindexe in den optimizedIntermediateWaypointIndex
-Feldern des Objekts „routes“ im Antworttext. Die codierte Polylinie ist mit der in der Directions API und ComputeRoutes identisch.
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 durch das Optimieren der Wegpunkte ihre ursprüngliche Reihenfolge umgekehrt.
Best Practices
Eine Anfrage mit optimierten Wegpunkten dauert länger als eine einfache Routinganfrage. Daher empfehlen wir, ein höheres Zeitlimit für den Methodenaufruf festzulegen. Dazu legen Sie für den Anfrageheader X-Server-Timeout
mindestens zehn Sekunden fest. Wenn Sie weiterhin Zeitüberschreitungsfehler erhalten, 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 für Wegpunkte auf Ihrer Route bis zum Nutzungslimit angeben:
- Bis zu 98 Wegpunkte, für die nur Breiten- und Längengrade verwendet werden
- Bis zu 25 Wegpunkte, wenn Sie Wegpunkte mithilfe von Orts-IDs angeben.
Alle Wegpunkte müssen den Typ stopover haben. Keiner Ihrer Wegpunkte darf den Typ via haben.
Sie müssen der Feldmaske
routes.optimizedIntermediateWaypointIndex
hinzufügen.Wenn Ihre Anfrage 25 oder mehr Zwischenwegpunkte enthält, müssen außerdem die folgenden Bedingungen erfüllt sein:
Die kumulierte Luftstrecke 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 lauten.