Użyj interfejsu Routes API, aby obliczyć odległość i czas trwania trasy dla wielu miejsc początkowych i docelowych, wywołując metodę computeRouteMatrix (REST) lub metodę strumieniową ComputeRouteMatrix (gRPC).
Na podstawie listy miejsc wylotu i celów metoda oblicza odległość i czas trwania trasy rozpoczynającej się w każdym miejscu wylotu i kończącej w każdym miejscu docelowym.
Uzyskiwanie macierzy tras transportu publicznego
Możesz też obliczyć macierz tras w transporcie zbiorowym. Przykład znajdziesz w artykule Pobieranie tabeli tras w przypadku 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 miejscem wyjazdu a miejscem docelowym w macierzy tras, więc liczba elementów to liczba miejsc wyjazdu pomnożona przez liczbę miejsc docelowych. Jeśli na przykład masz 10 elementów źródłowych i 10 docelowych, masz 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 przekraczać 100.Jeśli określisz
TRAFFIC_AWARE_OPTIMAL
, liczba elementów nie może przekroczyć 100. Więcej informacji oTRAFFIC_AWARE_OPTIMAL
znajdziesz w artykule Określanie sposobu i czasu uwzględniania danych o natychliwości ruchu.Jeśli podajesz punkty początkowe lub docelowe za pomocą adresu lub identyfikatora miejsca, możesz w ten sposób podać łącznie do 50 punktów.
Błędy odpowiedzi
Jedną z funkcji metod obliczania macierzy tras jest to, że błędy mogą być zwracane w przypadku całej odpowiedzi lub poszczególnych elementów odpowiedzi. Jeśli żądanie jest nieprawidłowe (np. nie ma żadnych źródeł), cała odpowiedź zawiera błąd.
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 musisz czekać, aż zostaną obliczone wszystkie możliwe kombinacje tras, aby rozpocząć przetwarzanie wyników.
Nie ma gwarancji, że elementy zwracane przez strumień zostaną zwrócone w żadnej kolejności. Dlatego każdy element odpowiedzi zawiera element origin_index
i destination_index
. W przypadku miejsc wyjazdu i miejsc docelowych określonych w żądaniu:origins[origin_index]
destinations[destination_index]
Tablice te mają indeks zerowy. Należy przechowywać zamówienia na listach źródeł i miejsc docelowych.
Przykłady obliczania macierzy tras
Aby obliczyć macierz tras, użyj metody computeRouteMatrix w żądaniu HTTP.
Przykład HTTP
Poniższy przykład pokazuje żądanie HTTP computeRouteMatrix
. W tym przykładzie:
Podaj tablicę z 2 punktami początkowymi i 2 punktami docelowymi. 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 – indeks 1 itd.
Uwzględnij maskę pola odpowiedzi, aby określić, które pola response (REST) lub ComputeRoutesResponse (gRPC) mają zostać zwrócone. W tym przykładzie skonfiguruj żądanie tak, aby zwracało parametry
originIndex
,destinationIndex
,duration
,distanceMeters
,status
icondition
dla każdej ścieżki. 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 dla kombinacji wszystkich punktów początkowych i docelowych.
W odpowiedzi zidentyfikuj każdą trasę, używając pól odpowiedzi originIndex
i destinationIndex
. Na przykład wartość originIndex
= 1 w odpowiedzi odpowiada trasie obliczonej na podstawie punktu orientacyjnego o indeksie 1 w 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 – zobacz przykłady w sekcji Przykładowe żądanie gRPC. Przykład w Javie na tej stronie wywołuje zarówno trasy Compute, jak i macierz tras Compute.