Interfejs Routes API służy do obliczania odległości i czasu trwania trasy dla wielu punktów początkowych i docelowych przez wywołanie metody computeRouteMatrix (REST) lub metody strumieniowego przesyłania ComputeRouteMatrix (gRPC).
Mając na podstawie listy miejsc wylotu i celów podróży, metoda oblicza odległość i czas trwania trasy, która zaczyna się w każdym miejscu wyjazdu i kończy w każdym miejscu docelowym.
Uzyskiwanie macierzy tras transportu publicznego
Możesz też wyznaczyć macierz tras dla transportu publicznego. Przykład znajdziesz w sekcji Uzyskiwanie macierzystych tras dla transportu publicznego.
Limity żądań
Metody Compute Route Matrix egzekwują poniższe limity żądań do punktów pośrednich korzystających z adresów lub identyfikatorów PlaceID oraz dla elementów. Elementy to trasy między każdym punktem początkowym a miejscem docelowym w macierzy tras, więc liczba elementów to liczba punktów początkowych razy liczba miejsc docelowych. Jeśli na przykład masz 10 punktów początkowych i 10 miejsc docelowych, otrzymasz 100 elementów:
Liczba elementów nie może przekraczać 625 w przypadku tras, które nie są trasami typu
TRANSIT
.Jeśli określisz trasę
TRANSIT
, liczba elementów nie może przekroczyć 100.Jeśli określisz
TRAFFIC_AWARE_OPTIMAL
, liczba elementów nie może przekroczyć 100. Więcej informacji o właściwościTRAFFIC_AWARE_OPTIMAL
znajdziesz w artykule Określanie, czy i w jaki sposób chcesz uwzględniać dane o ruchu.Jeśli określisz miejsca wylotu lub miejsca przylotu za pomocą adresu lub identyfikatora miejsca, możesz w ten sposób określić maksymalnie 50.
Błędy odpowiedzi
Jedną z funkcji metod macierzy tras Compute jest to, że błędy mogą być zwracane zarówno w przypadku całej odpowiedzi, jak i poszczególnych jej elementów. Na przykład cała odpowiedź zawiera błąd, jeśli żądanie ma nieprawidłowy format (np. ma zerowe źródło).
Jeśli jednak błąd dotyczy podzbioru elementów w odpowiedzi (np. nie można obliczyć trasy dla jednej kombinacji punktu początkowego i docelowego), tylko elementy, których dotyczy błąd, zwracają kod błędu.
Wyniki strumienia gRPC
Metoda gRPC ComputeRouteMatrix pobiera listę punktów początkowych i docelowych oraz zwraca strumień zawierający informacje o trasie dla każdej kombinacji miejsca wylotu i miejsca docelowego. Wyniki są zwracane w postaci strumienia, więc nie trzeba czekać, aż wszystkie możliwe kombinacje tras zostaną obliczone, zanim będzie można rozpocząć ich przetwarzanie.
Nie ma gwarancji, że elementy zwracane przez strumień zostaną zwrócone w żadnej kolejności. Dlatego każdy element odpowiedzi zawiera origin_index
i destination_index
. Dla punktów początkowych i przylotów określonych w żądaniu początek trasy dla danego elementu odpowiada wartości origins[origin_index]
, a miejsce docelowe trasy jest równoważne wartości destinations[destination_index]
.
Tablice te mają indeks zerowy. Ważne jest, by zachowywać kolejność miejsc
odjazdu i miejsca docelowego.
Przykłady obliczania macierzy tras
Użyj metody computeRouteMatrix w żądaniu HTTP, aby obliczyć macierz tras.
Przykład HTTP
Poniżej znajduje się przykład żądania HTTP computeRouteMatrix
. W tym przykładzie:
Określ tablicę z dwoma punktami początkowymi i dwoma docelowymi punktami pośrednimi. Ta metoda oblicza trasę z każdego punktu początkowego do każdego miejsca docelowego, więc odpowiedź zawiera 4 trasy.
W tablicy pierwszy element ma indeks 0, drugi to indeks 1 i tak dalej.
Dołącz maskę pola odpowiedzi, aby określić, które pola odpowiedzi (REST) lub ComputeRoutesResponse (gRPC) mają być zwracane. W tym przykładzie skonfigurujesz żądanie, aby zwracało w przypadku każdej trasy
originIndex
,destinationIndex
,duration
,distanceMeters
,status
icondition
. Więcej informacji znajdziesz w sekcji Wybieranie pól do zwrócenia.
curl -X POST -d '{ "origins": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420761, "longitude": -122.081356 } } }, "routeModifiers": { "avoid_ferries": true} }, { "waypoint": { "location": { "latLng": { "latitude": 37.403184, "longitude": -122.097371 } } }, "routeModifiers": { "avoid_ferries": true} } ], "destinations": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420999, "longitude": -122.086894 } } } }, { "waypoint": { "location": { "latLng": { "latitude": 37.383047, "longitude": -122.044651 } } } } ], "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \ 'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'
Odpowiedź zawiera 4 możliwe trasy połączenia wszystkich punktów początkowych i docelowych.
Określ każdą trasę w odpowiedzi, korzystając z pól odpowiedzi originIndex
i destinationIndex
. Na przykład wartość originIndex
o wartości 1 w odpowiedzi odpowiada trasie obliczonej z punktu pośredniego w indeksie 1 tablicy origins
w żądaniu.
[ { "originIndex": 0, "destinationIndex": 0, "status": {}, "distanceMeters": 822, "duration": "160s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 0, "status": {}, "distanceMeters": 2919, "duration": "361s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 1, "status": {}, "distanceMeters": 5598, "duration": "402s", "condition": "ROUTE_EXISTS" }, { "originIndex": 0, "destinationIndex": 1, "status": {}, "distanceMeters": 7259, "duration": "712s", "condition": "ROUTE_EXISTS" } ]
Przykłady gRPC
Przykładowe żądania gRPC znajdziesz w sekcji Przykładowe żądanie gRPC. Przykład w języku Java na tej stronie wywołuje zarówno trasy Compute, jak i macierz tras Compute.