Interfejs Routes API umożliwia obliczenie odległości i czasu trwania trasy dla wielu punktów początkowych i miejsc docelowych przez wywołanie metody computeRouteMatrix (REST) lub metody przesyłania strumieniowego ComputeRouteMatrix (gRPC).
Biorąc pod uwagę listę miejsc wylotu i celów podróży, metoda ta oblicza odległość i czas trwania trasy, która rozpoczyna się od każdego miejsca wylotu i kończy w miejscu docelowym.
Pobierz macierz tras transportu publicznego
Możesz też obliczyć macierz tras dla transportu publicznego. Na przykład w sekcji Uzyskiwanie macierzy tras dla transportu publicznego.
Limity żądań
Metody macierzy tras Compute wymuszają poniższe ograniczenia żądań dotyczące punktów na trasie używających adresów lub identyfikatorów miejsca oraz elementów. Elementy to trasy między każdym punktem początkowym i celem w tablicy tras, więc liczba elementów to liczba punktów początkowych razy, czyli liczba miejsc docelowych. Jeśli na przykład masz 10 punktów początkowych i 10 miejsc docelowych, masz 100 elementów:
Liczba elementów nie może przekraczać 625 w przypadku tras, które nie są trasami
TRANSIT
.Jeśli określisz trasę
TRANSIT
, liczba elementów nie może przekroczyć 100.Jeśli podasz
TRAFFIC_AWARE_OPTIMAL
, liczba elementów nie może przekroczyć 100. Więcej informacji o poluTRAFFIC_AWARE_OPTIMAL
znajdziesz w sekcji Określanie, czy i w jaki sposób uwzględniać dane o ruchu.Jeśli określasz miejsca wylotu lub miejsca docelowe za pomocą adresu lub identyfikatora miejsca, możesz w ten sposób podać maksymalnie 50.
Błędy odpowiedzi
Jedną z funkcji metod macierzy 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 te elementy zwracają kod błędu.
Wyniki strumienia gRPC
Metoda gRPC ComputeRouteMatrix pobiera listę punktów początkowych i docelowych, a następnie zwraca strumień zawierający informacje o trasie dla każdej kombinacji punktu początkowego i docelowego. Wyniki są zwracane jako strumień, więc nie musisz czekać, aż obliczymy 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 właściwości 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]
w przypadku danego elementu, a miejsce docelowe trasy jest równoważne z destinations[destination_index]
.
Te macierze mają stan zero indeksowania. Ważne jest, aby przechowywać zamówienia na liście punktu początkowego i docelowego.
Przykłady obliczania macierzy tras
Do obliczenia macierzy tras użyj metody computeRouteMatrix w żądaniu HTTP.
Przykład HTTP
Przykład poniżej pokazuje żądanie HTTP computeRouteMatrix
. W tym przykładzie:
Określ tablicę składającą się z dwóch punktów początkowych i dwóch docelowych punktów na trasie. Ta metoda oblicza trasę z każdego punktu początkowego do każdego miejsca docelowego, dzięki czemu odpowiedź zawiera 4 trasy.
W tablicy pierwszy element ma indeks wynoszący 0, drugi indeks 1 itd.
Aby określić, które pola odpowiedzi (REST) lub ComputeRoutesResponse (gRPC) mają zostać zwrócone, dołącz maskę pola odpowiedzi. W tym przykładzie skonfiguruj żądanie zwracania dla każdej trasy odpowiedzi
originIndex
,destinationIndex
,duration
,distanceMeters
,status
icondition
. Więcej informacji znajdziesz w artykule o wybieraniu 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, używając pól odpowiedzi originIndex
i destinationIndex
. Na przykład originIndex
z 1 w odpowiedzi odpowiada trasie obliczonej na podstawie 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ładach żądania gRPC. Przykład w Javie na tej stronie wywołuje zarówno trasy Compute, jak i macierz tras Compute.