Pobieranie macierzy tras

Interfejs Routes API służy do obliczania odległości i czasu trwania trasy dla wielu punktów początkowych i docelowych przez wywołanie metody computeRouteMatrix (REST) lub metody strumieniowego przesyłania ComputeRouteMatrix (gRPC).

Mając na podstawie listy miejsc wylotu i celów podróży, metoda oblicza odległość i czas trwania trasy, która zaczyna się w każdym miejscu wyjazdu i kończy w każdym miejscu docelowym.

Uzyskiwanie macierzy tras transportu publicznego

Możesz też wyznaczyć macierz tras dla transportu publicznego. Przykład znajdziesz w sekcji Uzyskiwanie macierzystych tras dla 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 punktem początkowym a miejscem docelowym w macierzy tras, więc liczba elementów to liczba punktów początkowych razy liczba miejsc docelowych. Jeśli na przykład masz 10 punktów początkowych i 10 miejsc docelowych, otrzymasz 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 przekroczyć 100.

  • Jeśli określisz TRAFFIC_AWARE_OPTIMAL, liczba elementów nie może przekroczyć 100. Więcej informacji o właściwości TRAFFIC_AWARE_OPTIMAL znajdziesz w artykule Określanie, czy i w jaki sposób chcesz uwzględniać dane o ruchu.

  • Jeśli określisz miejsca wylotu lub miejsca przylotu za pomocą adresu lub identyfikatora miejsca, możesz w ten sposób określić maksymalnie 50.

Błędy odpowiedzi

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

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 trzeba czekać, aż wszystkie możliwe kombinacje tras zostaną obliczone, zanim będzie można rozpocząć ich przetwarzanie.

Nie ma gwarancji, że elementy zwracane przez strumień zostaną zwrócone w żadnej kolejności. Dlatego każdy element odpowiedzi zawiera origin_index i destination_index. Dla punktów początkowych i przylotów określonych w żądaniu początek trasy dla danego elementu odpowiada wartości origins[origin_index], a miejsce docelowe trasy jest równoważne wartości destinations[destination_index]. Tablice te mają indeks zerowy. Ważne jest, by zachowywać kolejność miejsc odjazdu i miejsca docelowego.

Przykłady obliczania macierzy tras

Użyj metody computeRouteMatrix w żądaniu HTTP, aby obliczyć macierz tras.

Przykład HTTP

Poniżej znajduje się przykład żądania HTTP computeRouteMatrix. W tym przykładzie:

  • Określ tablicę z dwoma punktami początkowymi i dwoma docelowymi punktami pośrednimi. 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 to indeks 1 i tak dalej.

  • Dołącz maskę pola odpowiedzi, aby określić, które pola odpowiedzi (REST) lub ComputeRoutesResponse (gRPC) mają być zwracane. W tym przykładzie skonfigurujesz żądanie, aby zwracało w przypadku każdej trasy originIndex, destinationIndex, duration, distanceMeters, status i condition. 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 połączenia wszystkich punktów początkowych i docelowych.

Określ każdą trasę w odpowiedzi, korzystając z pól odpowiedzi originIndex i destinationIndex. Na przykład wartość originIndex o wartości 1 w odpowiedzi odpowiada trasie obliczonej z 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 sekcji Przykładowe żądanie gRPC. Przykład w języku Java na tej stronie wywołuje zarówno trasy Compute, jak i macierz tras Compute.