Alternative Routen anfordern

Die Routes API gibt standardmäßig die default-Route zurück. Dies ist normalerweise 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 eine Route auswählen, die ihren Anforderungen am besten entspricht.

Überlegungen beim Anfordern alternativer Routen

Beachten Sie beim Anfordern alternativer Routen die folgenden Überlegungen:

  • Alternative Routen können nur für Routen ohne Wegpunkte angefordert werden. Wenn alternative Routen angefordert werden, wenn in der Route Wegpunkte angegeben sind, wird kein Fehler verursacht. 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 zur Berechnung alternativer Routen erforderlich ist, kann das Anfordern alternativer Routen die Antwortzeit der API erhöhen.

Beispiel für eine Anfrage für alternative Routen

Setzen Sie computeAlternativeRoutes auf true, 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 der Kunde dann die Route auswählen. Weitere Informationen finden Sie unter Auswählen, welche Informationen zurückgegeben werden sollen.

Beispiel für eine Antwort auf alternative Routen

Verwenden Sie in der Antwort das Array-Attribut routeLabels, um die Reichweitenroute zu identifizieren:

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

  • Für alternative Routen enthält das Attribut routeLabels 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

Damit Nutzer die Route leichter auswählen können, fügen Sie der Antwort für jede Route die Polylinie hinzu. Anschließend können Sie jede Polylinie 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"
      ]
    }
   ]
}