Zurückzugebende Informationen auswählen

Wenn Sie eine Methode zum Berechnen einer Route oder Routenmatrix aufrufen, müssen Sie angeben, welche Informationen Sie benötigen. Geben Sie dazu die Felder an, 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.

Sie geben die Feldliste an, indem Sie eine Antwortfeldmaske erstellen. Sie übergeben die Antwortfeldmaske dann an eine der Methoden, indem Sie den URL-Parameter $fields oder fields oder den HTTP- oder gRPC-Header X-Goog-FieldMask verwenden.

Mit Feldmasken lässt sich verhindern, dass unnötige Daten angefordert werden, was wiederum hilft, unnötige Verarbeitungszeiten und Gebühren 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 bei 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 in der Routes API nach den Feldern, die die benötigten Informationen enthalten. Weitere Informationen finden Sie unter Feldverweise.
  2. Pfade für die benötigten Felder ermitteln und Feldmasken dafür erstellen: Weitere Informationen finden Sie unter Feldmaske festlegen.
  3. Kombinieren Sie die Feldmasken für alle erforderlichen Felder und trennen Sie sie durch Kommas. Wenn Sie beispielsweise den distanceMeters für den Streckenabschnitt sowie die Dauer für jeden Schritt des Streckenabschnitts anfordern möchten, geben Sie beide Werte 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

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

Diese Verweise enthalten die verfügbaren Felder. Sie müssen jedoch die Hierarchie der Felder berücksichtigen, um den vollständigen Pfad der Feldmaske zu ermitteln. Weitere Informationen zum Abrufen der Hierarchie der Felder finden Sie unter Feldmaske festlegen.

  • Maske für das Feld „Route“ berechnen
    • REST: Gibt die Felder des Route-Objekts in der zurückzugebenden Antwort mit dem Präfix routes. an, z. B. routes.distanceMeters.
    • gRPC: Gibt an, welche Felder des Route-Objekts in der Antwort zurückgegeben werden sollen.
  • Feldmasken für die Routenmatrix berechnen
    • REST: Gibt an, welche Felder des Antworttexts zurückgegeben werden sollen.
    • gRPC: Gibt die Felder des RouteMatrixElement-Objekts in der zurückzugebenden Antwort an.

Feldmasken festlegen

So können Sie festlegen, welche Felder Sie verwenden möchten, und die Feldmasken dafür erstellen:

  1. Fordern Sie alle Felder an, indem Sie eine Feldmaske von * verwenden.
  2. Suchen Sie in der Antwort nach der gewünschten Feldhierarchie.
  3. Erstellen Sie Ihre Feldmasken anhand der im vorherigen Schritt gezeigten Feldhierarchie im folgenden Format:

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

Beispiel für eine Teilantwort einer Route:

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

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

routes.legs.distanceMeters

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

routes.legs.steps.distanceMeters

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

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

Beispielpfade für Feldmasken

Dieser Abschnitt enthält weitere Beispiele dazu, wie Sie einen Feldpfad als Teil einer Antwortfeldmaske in REST- und gRPC-Aufrufen angeben.

REST-Aufruf an computeRoutes

Im ersten Beispiel wird ein REST-Aufruf an die Methode computeRoutes verwendet, 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 das Präfix 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 für jede Kombination aus Start- und Zielort originIndex, destinationIndex und duration zurückgegeben werden sollen:

X-Goog-FieldMask: originIndex,destinationIndex,duration

gRPC-Aufruf

Legen Sie für gRPC eine Variable mit der Antwortfeldmaske fest. Sie können diese Variable dann an die Anfrage übergeben.

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

Hinweise zu Feldpfaden

Fügen Sie nur die erforderlichen Felder in die Antwort ein, damit nur die erforderlichen Felder zurückgegeben werden:

  • Reduziert die Verarbeitungszeiten, sodass die Ergebnisse mit einer geringeren Latenz zurückgegeben werden.
  • Sorgt für eine stabile Latenzleistung. Wenn Sie alle Felder oder alle Felder auf oberster Ebene auswählen, kann es zu Leistungseinbußen kommen, wenn neue Felder hinzugefügt und dann automatisch in die Antwort eingeschlossen werden.
  • Die Antwortgröße ist kleiner, 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 in field_mask.proto.

Routen-Token anfordern

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

  1. Legen Sie die folgenden Parameter fest, die zum Zurückgeben eines Routentokens erforderlich sind:
    • Setzen Sie travelMode auf DRIVE.
    • Legen Sie routingPreference auf TRAFFIC_AWARE oder TRAFFIC_AWARE_OPTIMAL fest.
  2. Prüfen Sie, ob keine Ihrer Routen-Wegpunkte via-Wegpunkte sind.
  3. Geben Sie die Feldmaske routes.routeToken an, um ein Routentoken zurückzugeben:
    X-Goog-FieldMask: routes.routeToken

Sie können das Routen-Token für Ihre geplante Route im Navigation SDK verwenden. Weitere Informationen finden Sie unter Route planen (Android) oder 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 Compute Routes API-Referenz.