Alternative Routen anfordern

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

Überlegungen beim Anfordern alternativer Routen

Beachten Sie die folgenden Hinweise, wenn Sie alternative Routen anfordern möchten:

  • Alternative Routen können nur für Routen ohne Wegpunkte angefordert werden. Das Anfordern alternativer Routen, wenn für die Route Wegpunkte 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 für die Berechnung alternativer Routen erforderlich ist, kann das Anfordern alternativer Routen die Antwortzeit der API erhöhen.

Beispielanfrage für alternative Routen

Legen Sie für computeAlternativeRoutes den Wert true fest, um alternative Routen anzufordern. Das folgende Beispiel zeigt, wie alternative Routen in einer REST-Anfrage (computeRoutes) angefordert werden.

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, sodass die Antwort für jede Route nur die Attribute duration, distanceMeters, und routeLabels enthält. Anhand dieser Informationen kann Ihr Kunde dann die gewünschte Route wählen. Weitere Informationen finden Sie unter Auswählen, welche Informationen zurückgegeben werden sollen.

Beispielantwort für alternative Routen

Verwenden Sie in der Antwort das Arrayattribut routeLabels, um die Reichweitenroute anzugeben:

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

  • Für alternative Routen enthält das Attribut routeLabels den Wert DEFAULT_ROUTE_ALTERNATE.

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

{
  "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 einschließen

Fügen Sie der Antwort die Polylinie für jede Route hinzu, um dem Nutzer die Auswahl der Route zu erleichtern. Anschließend können Sie die einzelnen Polylinien auf einer Karte darstellen.

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 die Polylinie 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"
      ]
    }
   ]
}