Wybierz informacje, które mają być zwracane
Gdy wywołujesz metodę obliczania trasy lub macierzy tras, musisz określić, jakie informacje chcesz otrzymać, podając pola, które mają zostać zwrócone w odpowiedzi. Nie ma domyślnej listy zwróconych pól. Jeśli pominiesz tę listę, metody zwrócą błąd.
Listę pól określasz, tworząc maskę pola odpowiedzi. Następnie przechodzisz
maskę pola odpowiedzi w dowolnej z metod przy użyciu parametru adresu URL $fields
lub
fields
albo przy użyciu nagłówka HTTP lub gRPC X-Goog-FieldMask
.
Używanie maski pola to dobra praktyka projektowania, która pozwala uniknąć przesyłania niepotrzebnych danych, a to z kolei pozwala uniknąć niepotrzebnego czasu przetwarzania i opłat.
Więcej informacji o parametrach adresów URL znajdziesz w artykule Parametry systemowe.
Zdefiniuj maskę pola odpowiedzi
Maska pola odpowiedzi to lista ścieżek oddzielonych przecinkami, gdzie każda ścieżka określa niepowtarzalne pole w wiadomości odpowiedzi. Ścieżka rozpoczyna się od wiadomości z odpowiedzią najwyższego poziomu i wykorzystuje parametr oddzielone kropkami do określonego pola.
Aby utworzyć i określić ścieżkę pola, wykonaj te czynności:
- Znajdź pola zawierające potrzebne informacje z interfejsu Routes API. Szczegółowe informacje znajdziesz w dokumentacji pól.
- Określ ścieżki do potrzebnych pól i utwórz dla nich maski pól: szczegółowe informacje znajdziesz w sekcji Określanie maski pola, której chcesz użyć.
Połącz maski pól dla wszystkich potrzebnych pól, rozdzielając je przecinkami. Aby na przykład poprosić o
distanceMeters
dla danego odcinka trasy oraz o czas trwania każdego kroku na tym odcinku, wpisz oba te elementy rozdzielone przecinkami bez spacji:routes.legs.distanceMeters,routes.legs.steps.duration
Wyślij maskę pola za pomocą żądania do interfejsu API. Na przykład w żądaniu cURL musisz określić maskę pola za pomocą parametrów
-H
iX-Goog-FieldMask
:-H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
Odwołania do pól
Aby sprawdzić, które pola możesz poprosić o zwrócenie w odpowiedzi za pomocą masek pól, zapoznaj się z dokumentacją interfejsu Routes API, do której linki znajdziesz na liście poniżej. Wskazuje pola w stylu „camel case” (wielkie litery w słowie od pierwszej litery) zgodnie z opisem. Na przykład: routePreference
.
Obejmują one dostępne pola. aby określić pełną ścieżkę maski pola, musisz jednak odnieść się do hierarchii pól. Szczegółowe informacje o uzyskiwaniu hierarchii pól znajdziesz w sekcji Określanie, której maski pola chcesz użyć.
- Oblicz maskę pola trasy
- Oblicz maski pól macierzy tras
- REST: określa pola elementu Response body, które mają być zwracane.
- gRPC: określa pola wartości RouteMatrixElement .
Wybieranie masek pól
Aby określić, których pól chcesz użyć, i utworzyć dla nich maski pól:
- Poproś o wszystkie pola przy użyciu maski pola
*
. - Przejrzyj hierarchię pól w odpowiedzi na żądanie wybranych polach.
Zbuduj maski pól, korzystając z hierarchii pól pokazanych w poprzednim kroku i w tym formacie:
topLevelField[.secondLevelField][.thirdLevelField][...]
Na przykład w przypadku tej częściowej odpowiedzi z trasy:
"routes": [ { "legs": [ { "steps": [ {"distanceMeters": 119}, {"distanceMeters": 41} ] } ], "distanceMeters": 160 } ]
Jeśli chcesz zwrócić tylko pole distanceMeters
dla etapu trasy: czyli ostatni element distanceMeters
w poprzednim przykładzie, maska pola wygląda tak:
routes.legs.distanceMeters
Jeśli chcesz zamiast tego zwracać pole distanceMeters
dla każdego etapu trasy: czyli distanceMeters
w steps
w poprzednim przykładzie, maska pola wygląda tak:
routes.legs.steps.distanceMeters
Jeśli chcesz zwrócić oba pola, z wynikiem powyżej, maska pola będzie wyglądać tak:
routes.legs.distanceMeters,routes.legs.steps.distanceMeters
Przykładowe ścieżki maski pól
Ta sekcja zawiera więcej przykładów pokazujących, jak określić ścieżkę pola jako część maski pola odpowiedzi w wywołaniach REST i gRPC.
Wywołanie REST do: computeRoutes
W pierwszym przykładzie do obliczenia trasy używasz wywołania REST do metody computeRoutes
. W tym przykładzie w nagłówku podajesz maski pól, aby zwrócić w odpowiedzi pola distanceMeters
i duration
. Pamiętaj, by poprzedzić nazwę pola znakiem routes
.
X-Goog-FieldMask: routes.distanceMeters,routes.duration
Wywołanie REST do: computeRouteMatrix
W przypadku trybu REST computeRouteMatrix
używana do obliczania macierzy tras, w nagłówku należy określić do zwrócenia
originIndex
, destinationIndex
i duration
dla każdej kombinacji źródła
i miejsce docelowe:
X-Goog-FieldMask: originIndex,destinationIndex,duration
Wywołanie gRPC
W przypadku gRPC ustaw zmienną zawierającą maskę pola odpowiedzi. Następnie możesz przekazać tę zmienną do żądania.
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
Uwagi dotyczące ścieżki pola
Uwzględnij tylko te pola, które są wymagane w odpowiedzi, aby zwrócić tylko Potrzebne pola:
- Krótszy czas przetwarzania, dzięki czemu wyniki są zwracane z mniejszym opóźnieniem.
- Zapewnia stabilną wydajność z niskim opóźnieniem. Jeśli zaznacz wszystkie pola. Jeżeli wybierzesz wszystkie pola na najwyższym poziomie, po dodaniu nowych pól spowoduje pogorszenie wydajności. automatycznie uwzględnione w odpowiedzi.
- Mniejszy rozmiar odpowiedzi przekłada się na większą przepustowość sieci.
- Zapewnia to, że nie żądasz zbędnych danych, co pozwala uniknąć niepotrzebnego czasu przetwarzania i rozliczonych opłat.
Więcej informacji o tworzeniu maski pola znajdziesz w dokumentacji field_mask.proto.
Poproś o token trasy
Aby poprosić interfejs Routes API o zwrócenie tokenów tras dla wygenerowanych tras, wykonaj te czynności:
- Ustaw te parametry wymagane do zwrócenia tokena trasy:
- Ustaw
travelMode
naDRIVE
. - Ustaw
routingPreference
naTRAFFIC_AWARE
lubTRAFFIC_AWARE_OPTIMAL
.
- Ustaw
- Sprawdź, czy żaden z punktów na trasie nie jest punktem
via
. - Aby zwrócić token trasy, określ maskę pola
routes.routeToken
:X-Goog-FieldMask: routes.routeToken
Tokenu trasy dla zaplanowanej trasy możesz użyć w pakiecie SDK Navigation. Więcej informacji znajdziesz w artykule Planowanie trasy (Android) lub Planowanie trasy (iOS).
Przykład tokenu trasy
Oto przykład treści żądania cURL dla pojedynczego punktu początkowego, pojedynczego miejsca docelowego trasa, korzystając z masek pól do żądania tokena trasy wraz z trasą czas trwania, odległość i linia łamana trasy:
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'
Więcej informacji znajdziesz w dokumentacji interfejsu Compute Routes API.