Interfejs Routes API umożliwia obliczenie 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 danych ComputeRouteMatrix (gRPC).
Biorąc pod uwagę listę miejsc początkowych i celów podróży, metoda oblicza odległość i czas trwania trasy, która rozpoczyna się od każdego miejsca wylotu i kończy w miejscu docelowym.
Pobieranie tablicy tras transportu publicznego
Możesz też obliczyć macierz tras dla transportu publicznego. Na przykład zobacz Wyświetlanie tablicy tras przy transporcie publicznym.
Limity żądań
Metody tablicy tras w Compute egzekwują poniższe ograniczenia żądań dotyczące punktów pośrednich korzystających z adresów lub identyfikatorów miejsca oraz elementów. Elementy to trasy między każdym punktem początkowym i docelowym w macierzy tras, więc liczba elementów to liczba miejsc początkowych razy i liczba miejsc docelowych. Jeśli na przykład masz 10 punktów początkowych i 10 miejsc docelowych, uzyskasz 100 elementów:
Liczba elementów nie może przekraczać 625 w przypadku tras, które nie są trasami
TRANSIT
.Jeśli podasz trasę
TRANSIT
, liczba elementów nie może przekraczać 100.Jeśli podasz
TRAFFIC_AWARE_OPTIMAL
, liczba elementów nie może przekroczyć 100. Więcej informacji na tematTRAFFIC_AWARE_OPTIMAL
znajdziesz w artykule Konfigurowanie jakości a czas oczekiwania.Jeśli określisz punkty początkowe lub miejsca docelowe za pomocą adresu lub identyfikatora miejsca, nie możesz przekroczyć łącznej liczby 50 miejsc początkowych i celów podróży.
Błędy odpowiedzi
Jedną z funkcji macierz tras Compute jest to, że błędy mogą być zwracane dla całej odpowiedzi lub dla poszczególnych jej elementów. Na przykład cała odpowiedź zawiera błąd, jeśli żądanie ma nieprawidłowy format (np. nie ma żadnych źródeł).
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 on dotyczy, zwraca kod błędu.
Wyniki strumienia gRPC
Metoda gRPC ComputeRouteMatrix pobiera listę punktów początkowych i docelowych i zwraca strumień zawierający informacje o trasie dla każdej kombinacji punktu początkowego i docelowego. Wyniki są zwracane w formie strumienia, więc nie musisz czekać, aż zostaną obliczone wszystkie możliwe kombinacje tras, zanim zaczniesz przetwarzać wyniki.
Nie ma gwarancji, że elementy zwrócone przez strumień zostaną zwrócone w żadnej kolejności. Dlatego każdy element odpowiedzi zawiera atrybuty origin_index
i destination_index
. W przypadku miejsc początkowych i miejsc docelowych określonych w żądaniu początek trasy jest odpowiednikiem origins[origin_index]
dla danego elementu, a miejsce docelowe trasy jest równoważne z destinations[destination_index]
.
Tablice mają wartość zerową. Przechowywanie list miejsc nadania
i list miejsc docelowych jest ważne.
Oblicz przykłady macierzy tras
Użyj metody computeRouteMatrix w żądaniu HTTP, aby obliczyć macierz tras.
Przykład HTTP
Poniższy przykład przedstawia żądanie HTTP computeRouteMatrix
. W tym przykładzie:
Określ tablicę z dwoma punktami na trasie wylotu i dwóch docelowych. Ta metoda oblicza trasę z każdego punktu początkowego do każdego miejsca docelowego tak, aby odpowiedź zawiera 4 trasy.
W tablicy pierwszy element ma indeks 0, drugi – indeks 1 itd.
Dodaj maskę pola odpowiedzi, aby określić, które pola odpowiedzi (REST) lub ComputeRoutesResponse (gRPC) mają być zwracane. W tym przykładzie skonfiguruj żądanie, aby w przypadku każdej trasy zwrócić żądanie
originIndex
,destinationIndex
,duration
,distanceMeters
,status
icondition
. Więcej informacji znajdziesz w artykule 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.
Zidentyfikuj każdą trasę w odpowiedzi za pomocą pól originIndex
i destinationIndex
. Na przykład originIndex
z 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
Na przykład żądania gRPC znajdziesz w przykładowym żądaniu gRPC. Znajdujący się na tej stronie przykład w Javie wywołuje zarówno macierz tras Compute, jak i macierz tras Compute.