Alternative Routen anfordern

Standardmäßig gibt die Routes API die Standardroute zurück, die in der Regel die schnellste Route vom Start- zum Zielort ist. Wenn Sie alternative Routen anfordern, gibt die API neben der Standardroute bis zu drei Routen zurück. Ihre Kunden können dann einen Weg auswählen, der ihren Anforderungen am besten entspricht.

Hinweise zum Anfordern von alternativen Routen

Beachten Sie beim Anfordern alternativer Routen Folgendes:

  • Sie können nur alternative Routen für Routen ohne Zwischenwegpunkte anfordern. Das Anfordern alternativer Routen, wenn für die Route Zwischenziele angegeben sind, führt nicht zu einem Fehler. Es werden jedoch keine alternativen Routen zurückgegeben.

  • Die Antwort enthält maximal drei alternative Routen. Manchmal sind jedoch keine alternativen Routen verfügbar, sodass die Antwort nur die Standardroute enthält.

  • Aufgrund der zusätzlichen Verarbeitung, die zum Berechnen alternativer Routen erforderlich ist, kann die Antwortzeit der API durch das Anfordern alternativer Routen erhöht werden.

Beispiel für eine Anfrage für alternative Routen

Legen Sie computeAlternativeRoutes auf true fest, um alternative Routen anzufordern. Im folgenden Beispiel wird gezeigt, wie Sie in einer REST-Anfrage an die Methode computeRoutes alternative Routen anfordern.

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude":42.340173523716736,
        "longitude":-71.05997968330408
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":42.075698891472804,
        "longitude": -72.59806562080408
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference":"TRAFFIC_AWARE",
  "computeAlternativeRoutes": true
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

In diesem Beispiel geben Sie eine Feldmaske an, damit die Antwort für jede Route nur die Properties duration, distanceMeters, und routeLabels enthält. Anhand dieser Informationen kann Ihr Kunde dann entscheiden, welche Route er nehmen möchte. Weitere Informationen finden Sie unter Zurückzugebende Informationen auswählen.

Beispiel für eine Antwort zu alternativen Routen

Verwenden Sie in der Antwort die Array-Property routeLabels, um den Pfad zur Reichweite zu identifizieren:

  • Für die Standardroute enthält die Eigenschaft routeLabels DEFAULT_ROUTE.

  • Für alle alternativen Routen enthält die routeLabels-Property DEFAULT_ROUTE_ALTERNATE.

In diesem Beispiel enthält die Antwort die Standardroute und zwei alternative Routen. Beachten Sie, dass die Werte der Attribute duration und distanceMeters für jede Route unterschiedlich sind:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}

Polylinien in die Antwort einfügen

Fügen Sie der Antwort die Polylinie für jede Route hinzu, damit Nutzer die Route leichter auswählen können. Anschließend können Sie jede Polylinie auf einer Karte anzeigen.

Fügen Sie zum Hinzufügen der Polylinie routes.polyline in die Feldmaske ein:

-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'

Die Antwort enthält dann den Polylinienzug für jede Route:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "polyline": {
        "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "polyline": {
        "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "polyline": {
        "encodedPolyline": "FVLL|Af@HPAV…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}