Pobieranie macierzy tras

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 TRANSITtrasę, 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, distanceMeterscondition 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:

  1. Poproś o wszystkie pola, używając maski pola ['*'].
  2. Sprawdź hierarchię pól w klasie RouteMatrixItem w przypadku wybranych pól.
  3. 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']