Macierz trasy to dwuwymiarowa tablica informacji o trasach, w której wiersze odpowiadają punktom początkowym, a kolumny – punktom docelowym. Klasa Route Matrix oblicza odległość i czas trwania trasy z każdego punktu początkowego do każdego punktu docelowego na podstawie listy punktów początkowych i docelowych. Użyj klasy Route Matrix, aby obliczyć odległość i czas trwania trasy dla wielu punktów początkowych i docelowych.
Limity żądań
Metoda RouteMatrix.computeRouteMatrix()
wymusza te limity żądań dotyczące punktów pośrednich z użyciem adresów lub instancji miejsc oraz elementów. Elementy to trasy między poszczególnymi miejscami wyjazdu i docelowymi 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 punktów początkowych i 10 punktów 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
TRANSIT
trasę, liczba elementów nie może przekraczać 100. - Jeśli podasz
TRAFFIC_AWARE_OPTIMAL
, liczba elementów nie może przekraczać 100. - Jeśli określasz punkty początkowe lub docelowe za pomocą adresów lub instancji miejsca, możesz określić w ten sposób maksymalnie 50 punktów.
Przykładowe żądanie macierzy tras
Poniższy przykład przedstawia ComputeRouteMatrixRequest
. Ten przykład
wykonuje te czynności:
- Pokazuje określanie tablicy 2 punktów pośrednich miejsca odjazdu i 2 punktów pośrednich miejsca docelowego. Metoda oblicza trasę z każdego miejsca wyjazdu do każdego miejsca docelowego, więc odpowiedź zawiera 4 trasy.
W tablicy pierwszy element ma indeks 0, drugi 1 itd. - Określ pola, które mają być zwracane. W tym przykładzie skonfiguruj żądanie zwracania wartości
durationMillis
,distanceMeters
icondition
dla każdej trasy.
const request = { origins: [origin1, origin2], destinations: [destinationA, destinationB], travelMode: google.maps.TravelMode.DRIVING, units: google.maps.UnitSystem.METRIC, fields: ['durationMillis', 'distanceMeters', 'condition'], };
Odpowiedź zawiera 4 możliwe trasy dla kombinacji wszystkich punktów pośrednich miejsca odjazdu i miejsca docelowego, jak pokazano w tym przykładzie:
"matrix": { "rows": [ { "items": [ { "condition": "ROUTE_EXISTS", "distanceMeters": 202587, "durationMillis": 10040000 }, { "condition": "ROUTE_EXISTS", "distanceMeters": 252734, "durationMillis": 12240000 } ] }, { "items": [ { "condition": "ROUTE_EXISTS", "distanceMeters": 166135, "durationMillis": 6596000 }, { "condition": "ROUTE_EXISTS", "distanceMeters": 216282, "durationMillis": 8797000 } ] } ] }
Zidentyfikuj każdą trasę w wyniku, używając indeksu miejsca docelowego i miejsca wylotu, aby znaleźć odpowiedni element RouteMatrixItem
w tablicy dwuwymiarowej. Na przykład element RouteMatrixItem
opisujący trasę obliczoną na podstawie miejsca początkowego o indeksie 1 i miejsca docelowego 0 w żądaniu znajdowałby się w 2 elemencie tablicy RouteMatrix.rows
i 1 elemencie tablicy RouteMatrixRow.items
.
Poniższy fragment kodu pokazuje, jak zidentyfikować RouteMatrixItem
, aby znaleźć trasę dla określonego miejsca odjazdu i miejsca docelowego:
// Find the route for origin 'x' and destination 'y'. const {matrix} = await RouteMatrix.computeRouteMatrix(request); const myRouteMatrixItem = matrix.rows[x].items[y];
Wybierz pola do zwrócenia
Gdy wysyłasz żądanie macierzy tras, musisz użyć maski pola, aby określić, jakie informacje powinna zwrócić odpowiedź.
Użycie maski pola zapewnia też, że nie prosisz o niepotrzebne dane, co z kolei pomaga zmniejszyć opóźnienie odpowiedzi i uniknąć zwracania informacji, których Twój system nie potrzebuje.
Określ listę potrzebnych pól, ustawiając właściwość
ComputeRoutesMatrixRequest.fields
, jak pokazano w tym fragmencie kodu:
fields: ['durationMillis', 'distanceMeters', 'condition'],
Określanie masek pól do użycia
Aby określić, których pól chcesz użyć, i utworzyć dla nich maski pól:
- Poproś o wszystkie pola, używając maski pola
['*']
. - Sprawdź hierarchię pól w klasie
RouteMatrixItem
w przypadku wybranych pól. Utwórz maski pól, korzystając z hierarchii pól pokazanej w poprzednim kroku, w tym formacie:
topLevelField[.secondLevelField][.thirdLevelField][...]
Na przykład w przypadku tego RouteMatrixItem
:
"travelAdvisory": { "fuelConsumptionMicroliters": 0, "tollInfo": { "estimatedPrices": [ { "currencyCode": "USD", "units": 4, "nanos": 400000000 } ] } },
Jeśli chcesz zwrócić tylko pole tollInfo
dla RouteMatrixItem
, maska pola będzie wyglądać tak:
fields: ['travelAdvisory.tollInfo']
Jeśli chcesz poprosić o szacowane zużycie paliwa, maska pola będzie wyglądać tak:
fields: ['travelAdvisory.fuelConsumptionMicroliters']
Jeśli chcesz poprosić o oba te elementy, maska pola będzie wyglądać tak:
fields: ['travelAdvisory.fuelConsumptionMicroliters', 'travelAdvisory.tollInfo']
Jeśli chcesz poprosić o pełny zestaw ostrzeżeń dotyczących podróży, maska pola będzie wyglądać tak:
fields: ['travelAdvisory']