Użyj interfejsu Routes API, aby obliczyć odległość i czas trwania trasy dla wielu miejsc wylotu i przylotu, wywołując metodę computeRouteMatrix (REST) lub metodę strumieniowego ComputeRouteMatrix (gRPC).
Na podstawie listy punktów początkowych i docelowych metoda oblicza odległość i czas trwania trasy rozpoczynającej się w każdym punkcie początkowym i kończącej w każdym punkcie docelowym.
Pobieranie macierzy tras przejazdu
Możesz też obliczyć macierz tras w transporcie zbiorowym. Przykład znajdziesz w artykule Pozyskiwanie macierzy tras w przypadku transportu publicznego.
Limity żądań
Metody obliczania macierzy trasy narzucają te limity zapytań dotyczące punktów pośrednich z użyciem adresu lub identyfikatorów miejsca docelowego oraz elementów. Elementy to trasy między każdym punktem początkowym a docelowym w macierzy tras, więc liczba elementów to liczba punktów początkowych pomnożona przez liczbę punktów 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
TRANSIT
.Jeśli określisz trasę
TRANSIT
, liczba elementów nie może przekraczać 100.Jeśli określisz wartość
TRAFFIC_AWARE_OPTIMAL
, liczba elementów nie może przekraczać 100. Więcej informacji oTRAFFIC_AWARE_OPTIMAL
znajdziesz w artykule Określanie sposobu i czasu uwzględniania danych o 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łowo sformułowane (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 miejsca pochodzenia i miejsca docelowego), tylko elementy, których dotyczy błąd, zwracają kod błędu.
Wyniki strumienia gRPC
Metoda gRPC ComputeRouteMatrix przyjmuje listę źródeł i miejsc docelowych, a następnie zwraca strumień zawierający informacje o trasie dla każdej kombinacji źródła i miejsca docelowego. Wyniki są zwracane jako strumień, 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ń będą zwracane 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]
Te tablice są indeksowane od zera. Ważne jest, aby 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. Metoda oblicza trasę z każdego miejsca pochodzenia do każdego miejsca docelowego, więc odpowiedź zawiera 4 trasy.
W tablicy pierwszy element ma indeks 0, drugi 1 itd.
Uwzględnij maskę pola odpowiedzi, aby określić, które pola odpowiedzi (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 zwracania.
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 funkcję Compute Routes, jak i macierz Compute Route.