Pobieranie macierzy tras

Interfejs Routes API umożliwia obliczenie odległości i czasu trwania trasy dla wielu punktów początkowych i docelowych przez wywołanie metody computeRouteMatrix (REST) lub metody streamingu ComputeRouteMatrix (gRPC).

Mając listę miejsc wylotu i celów podróży, metoda oblicza odległość i czas trwania trasy, która rozpoczyna się w przypadku każdego miejsca wylotu i kończy w miejscu docelowym.

Pobieranie macierzy tras transportu publicznego

Możesz też obliczyć macierz tras dla transportu publicznego. Przykład znajdziesz w artykule Wyświetlanie macierzy tras przy transporcie publicznym.

Limity żądań

Metody macierz tras Compute egzekwują poniższe ograniczenia żądań dotyczące punktów na trasie z użyciem adresów lub identyfikatorów miejsca oraz elementów. Elementy to trasy między każdym punktem początkowym i celem podróży w tablicy tras, więc liczba elementów jest liczbą punktów początkowych razy i liczbą miejsc docelowych. Jeśli na przykład masz 10 punktów początkowych i 10 miejsc docelowych, uzyskasz 100 elementów:

  • W przypadku tras, które nie są trasami innymi niż TRANSIT, liczba elementów nie może przekraczać 625.

  • Jeśli określisz trasę TRANSIT, liczba elementów nie może przekraczać 100.

  • Jeśli podasz TRAFFIC_AWARE_OPTIMAL, liczba elementów nie może przekroczyć 100. Więcej informacji o polu TRAFFIC_AWARE_OPTIMAL znajdziesz w sekcji Określanie, czy i w jaki sposób uwzględniać dane o ruchu.

  • Jeśli podajesz miejsca wylotu lub miejsca docelowe za pomocą adresu lub identyfikatora miejsca, możesz w ten sposób podać łącznie do 50.

Błędy odpowiedzi

Jedną z funkcji metod macierzy tras Compute jest to, że błędy mogą być zwracane dla całej odpowiedzi lub dla poszczególnych jej elementów. Na przykład cała odpowiedź zawiera błąd, jeśli żądanie ma nieprawidłowy format (np. nie ma żadnych źródeł).

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 ten błąd, zwraca kod błędu.

Wyniki strumienia gRPC

Metoda gRPC ComputeRouteMatrix pobiera listę punktów początkowych i docelowych i zwraca strumień zawierający informacje o trasie dla każdej kombinacji punktu początkowego i docelowego. Ponieważ wyniki są zwracane w postaci strumienia, nie musisz czekać, aż obliczymy wszystkie możliwe kombinacje tras, zanim zaczniesz przetwarzać wyniki.

Nie gwarantujemy, że elementy zwrócone przez strumień będą zwracane w żadnej kolejności. Dlatego każdy element odpowiedzi zawiera origin_index i destination_index. W przypadku punktów początkowych i miejsc docelowych określonych w żądaniu początek trasy jest odpowiednikiem origins[origin_index] dla danego elementu, a miejsce docelowe trasy jest równoważne z destinations[destination_index]. Te macierze są typu zero-indeks. Ważne jest zapisywanie kolejności miejsc początkowych i list docelowych.

Oblicz przykłady macierzy tras

Aby obliczyć macierz tras, użyj metody computeRouteMatrix w żądaniu HTTP.

Przykład HTTP

Ten przykład przedstawia żądanie HTTP computeRouteMatrix. W tym przykładzie:

  • Określ tablicę z dwoma punktami na trasie początkowy i 2 docelowymi. Ta metoda oblicza trasę z każdego miejsca wylotu do każdego miejsca docelowego, dzięki czemu odpowiedź zawiera 4 trasy.

    W tablicy pierwszy element ma indeks wynoszący 0, drugi indeks 1 itd.

  • Dodaj maskę pola odpowiedzi, aby określić, które pola odpowiedzi (REST) lub ComputeRoutesResponse (gRPC) mają być zwracane. W tym przykładzie skonfiguruj żądanie zwracania każdej trasy wartości originIndex, destinationIndex, duration, distanceMeters, status i condition. Więcej informacji znajdziesz w artykule 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 połączenia wszystkich punktów początkowych i docelowych.

Określ każdą trasę w odpowiedzi za pomocą pól odpowiedzi originIndex i destinationIndex. Na przykład originIndex z 1 w odpowiedzi odpowiada trasie obliczonej na podstawie punktu pośredniego w indeksie 1 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

Przykładowe żądania gRPC znajdziesz w przykładowym żądaniu gRPC. Znajdujący się na tej stronie przykład w Javie wywołuje zarówno trasy Compute, jak i macierz tras Compute.