Pobieranie macierzy tras

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 o TRAFFIC_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_indexdestination_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, statuscondition 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 originIndexdestinationIndex. 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.