Wählen Sie aus, welche Informationen zurückgegeben werden sollen

Wenn Sie eine Methode zum Berechnen einer Route oder Routenmatrix aufrufen, müssen Sie die gewünschten Informationen angeben. Dazu listen Sie die Felder auf, die in der Antwort zurückgegeben werden sollen. Es gibt keine Standardliste der zurückgegebenen Felder. Wenn Sie diese Liste weglassen, geben die Methoden einen Fehler zurück.

Zum Angeben der Feldliste erstellen Sie eine Antwortfeldmaske. Anschließend übergeben Sie die Antwortfeldmaske mithilfe des URL-Parameters $fields oder fields an eine der beiden Methoden oder mit dem HTTP- oder gRPC-Header X-Goog-FieldMask.

Die Verwendung einer Feldmaske hat sich bewährt, um sicherzustellen, dass keine unnötigen Daten angefordert werden, was wiederum dazu beiträgt, unnötige Verarbeitungszeiten und in Rechnung gestellte Kosten zu vermeiden.

Weitere Informationen zu URL-Parametern finden Sie unter Systemparameter.

Antwortfeldmaske definieren

Die Antwortfeldmaske ist eine durch Kommas getrennte Liste von Pfaden, wobei jeder Pfad ein eindeutiges Feld in der Antwortnachricht angibt. Der Pfad beginnt mit der Antwortnachricht der obersten Ebene und verwendet einen durch Punkte getrennten Pfad zum angegebenen Feld.

Erstellen Sie einen Feldpfad und geben Sie ihn so an:

  1. Suchen Sie die Felder mit den benötigten Informationen aus der Routes API. Weitere Informationen findest du unter Feldverweise.
  2. Pfade für die benötigten Felder bestimmen und Feldmasken dafür erstellen: Weitere Informationen finden Sie unter Zu verwendende Feldmaske bestimmen.
  3. Kombinieren Sie die Feldmasken für alle benötigten Felder und trennen Sie die Feldmasken durch Kommas. Wenn Sie beispielsweise die distanceMeters für den Routenabschnitt und die Dauer für jeden Routenabschnitt anfordern möchten, geben Sie beide durch ein Komma getrennt und ohne Leerzeichen ein:

    routes.legs.distanceMeters,routes.legs.steps.duration
  4. Senden Sie die Feldmaske mit Ihrer API-Anfrage. In einer cURL-Anfrage würden Sie beispielsweise die Feldmaske mit -H und X-Goog-FieldMask angeben:

    -H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
Beispiele und weitere Informationen finden Sie in den folgenden Abschnitten.

Feldverweise

Die Felder, die Sie in einer Antwort über Feldmasken anfordern können, finden Sie in den Routes API-Referenzen, die in der folgenden Liste verlinkt sind. Geben Sie die Felder wie in der Referenz gezeigt in der Camel-Case-Schreibweise an. Beispiel: routePreference.

Diese Verweise umfassen die verfügbaren Felder. Sie müssen sich jedoch auf die Hierarchie der Felder beziehen, um den vollständigen Feldmaskenpfad zu bestimmen. Weitere Informationen zum Abrufen der Hierarchie der Felder finden Sie im Hilfeartikel Welche Feldmaske soll verwendet werden?.

  • Feldmaske für Compute-Route
    • REST: Gibt die Felder des Route-Objekts in der zurückzugebenden Antwort mit dem Präfix routes. an, z. B. routes.distanceMeters.
    • gRPC: Gibt die Felder des Route-Objekts in der zurückzugebenden Antwort an.
  • Feldmasken der Routenmatrix berechnen
    • REST: Gibt die Felder des Antworttextes an, der zurückgegeben werden soll.
    • gRPC: Gibt die Felder des RouteMatrixElement-Objekts in der zurückzugebenden Antwort an.

Bestimmen, welche Feldmasken verwendet werden sollen

So legen Sie fest, welche Felder Sie verwenden möchten, und erstellen die Feldmasken:

  1. Alle Felder anfordern mit einer Feldmaske von *.
  2. Sehen Sie sich die Hierarchie der Felder in der Antwort für die gewünschten Felder an.
  3. Erstellen Sie Ihre Feldmasken unter Verwendung der im vorherigen Schritt gezeigten Hierarchie der Felder im folgenden Format:

    topLevelField[.secondLevelField][.thirdLevelField][...]

Für diese Teilantwort von einer Route gilt beispielsweise Folgendes:

"routes": [
    {
        "legs": [
            {  "steps": [
                    {"distanceMeters": 119},
                    {"distanceMeters": 41}  ]
            }
        ],
        "distanceMeters": 160
    }
]

Wenn Sie nur das Feld distanceMeters für den Routenabschnitt zurückgeben möchten, also die letzte distanceMeters im vorherigen Beispiel, sieht Ihre Feldmaske so aus:

routes.legs.distanceMeters

Wenn Sie stattdessen das Feld distanceMeters für jeden Schritt des Routenabschnitts zurückgeben möchten, also die distanceMeters unter steps im vorherigen Beispiel, sieht Ihre Feldmaske so aus:

routes.legs.steps.distanceMeters

Wenn Sie beide zurückgeben möchten, sieht Ihre Feldmaske mit dem obigen Ergebnis so aus:

routes.legs.distanceMeters,routes.legs.steps.distanceMeters

Beispiele für Feldmaskenpfade

Dieser Abschnitt enthält weitere Beispiele zum Angeben eines Feldpfads als Teil einer Antwortfeldmaske in REST- und gRPC-Aufrufen.

REST-Aufruf an computeRoutes

Im ersten Beispiel verwenden Sie einen REST-Aufruf an die Methode computeRoutes, um eine Route zu berechnen. In diesem Beispiel geben Sie im Header Feldmasken an, um die Routenfelder distanceMeters und duration in der Antwort zurückzugeben. Denken Sie daran, dem Feldnamen routes voranzustellen.

X-Goog-FieldMask: routes.distanceMeters,routes.duration

REST-Aufruf an computeRouteMatrix

Geben Sie für die REST-Methode computeRouteMatrix, die zum Berechnen einer Routenmatrix verwendet wird, im Header an, dass originIndex, destinationIndex und duration für jede Kombination aus Start- und Zielort zurückgegeben werden sollen:

X-Goog-FieldMask: originIndex,destinationIndex,duration

gRPC-Aufruf

Legen Sie für gRPC eine Variable fest, die die Antwortfeldmaske enthält. Sie können diese Variable dann an die Anfrage übergeben.

const (
  fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline"
)

Überlegungen zu Feldpfaden

Nehmen Sie in die Antwort nur die Felder auf, die Sie benötigen, damit nur die benötigten Felder zurückgegeben werden:

  • Verringert die Verarbeitungszeiten, sodass Ihre Ergebnisse mit einer geringeren Latenz zurückgegeben werden.
  • Sorgt für eine stabile Latenzleistung. Wenn Sie alle Felder oder alle Felder auf der obersten Ebene auswählen, kann es zu Leistungseinbußen kommen, wenn neue Felder hinzugefügt und dann automatisch in Ihre Antwort aufgenommen werden.
  • Ergibt eine kleinere Antwortgröße, was zu einem höheren Netzwerkdurchsatz führt.
  • Sorgt dafür, dass keine unnötigen Daten angefordert werden, um unnötige Verarbeitungszeiten und in Rechnung gestellte Kosten zu vermeiden.

Weitere Informationen zum Erstellen einer Feldmaske finden Sie unter field_mask.proto.

Routingtoken anfordern

So fordern Sie an, dass die Routes API Routentokens für generierte Routen zurückgibt:

  1. Legen Sie die folgenden Parameter fest, die erforderlich sind, um ein Routentoken zurückzugeben:
    • Setzen Sie travelMode auf DRIVE.
    • Legen Sie routingPreference auf TRAFFIC_AWARE oder TRAFFIC_AWARE_OPTIMAL fest.
  2. Achten Sie darauf, dass keiner der Wegpunkte Ihrer Route via-Wegpunkte ist.
  3. Geben Sie die Feldmaske routes.routeToken an, um ein Routentoken zurückzugeben:
    X-Goog-FieldMask: routes.routeToken

Sie können das Routentoken für Ihre geplante Route im Navigation SDK verwenden. Weitere Informationen finden Sie unter Route planen (Android) bzw. Route planen (iOS).

Beispiel für Routentoken

Hier ist ein Beispiel für einen cURL-Anfragetext für eine Route mit einem einzelnen Startort und einem einzelnen Ziel. Dabei werden Feldmasken zum Anfordern eines Routentokens zusammen mit der Routendauer, der Entfernung und der Polylinie auf der Route verwendet:

curl -X POST -d
{"origin":{
    "location": {
        "latLng":{
            "latitude":  -37.8167,
            "longitude": 144.9619
        }
    }
},
"destination":{
    "location": {
        "latLng":{
            "latitude":-37.8155,
            "longitude": 144.9663
        }
    }
},
"routingPreference":"TRAFFIC_AWARE",
"travelMode":"DRIVE"
}
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H X-Goog-FieldMask: routes.routeToken,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
'https://routes.googleapis.com/directions/v2:computeRoutes'

Weitere Informationen finden Sie in der Referenz zur Compute Routes API.