Pobieranie macierzy tras

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

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

Pobierz macierz tras transportu publicznego

Możesz też obliczyć macierz tras dla transportu publicznego. Na przykład w sekcji Uzyskiwanie macierzy tras dla transportu publicznego.

Limity żądań

Metody macierzy tras Compute wymuszają poniższe ograniczenia żądań dotyczące punktów na trasie używających adresów lub identyfikatorów miejsca oraz elementów. Elementy to trasy między każdym punktem początkowym i celem w tablicy tras, więc liczba elementów to liczba punktów początkowych razy, czyli liczba miejsc docelowych. Jeśli na przykład masz 10 punktów początkowych i 10 miejsc 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 trasę TRANSIT, liczba elementów nie może przekroczyć 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 określasz miejsca wylotu lub miejsca docelowe za pomocą adresu lub identyfikatora miejsca, możesz w ten sposób podać maksymalnie 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 te elementy zwracają kod błędu.

Wyniki strumienia gRPC

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

Nie ma gwarancji, że elementy zwrócone przez strumień zostaną zwrócone w żadnej kolejności. Dlatego każdy element odpowiedzi zawiera właściwości origin_index i destination_index. W przypadku miejsc początkowych i miejsc docelowych określonych w żądaniu początek trasy jest odpowiednikiem origins[origin_index] w przypadku danego elementu, a miejsce docelowe trasy jest równoważne z destinations[destination_index]. Te macierze mają stan zero indeksowania. Ważne jest, aby przechowywać zamówienia na liście punktu początkowego i docelowego.

Przykłady obliczania macierzy tras

Do obliczenia macierzy tras użyj metody computeRouteMatrix w żądaniu HTTP.

Przykład HTTP

Przykład poniżej pokazuje żądanie HTTP computeRouteMatrix. W tym przykładzie:

  • Określ tablicę składającą się z dwóch punktów początkowych i dwóch docelowych punktów na trasie. Ta metoda oblicza trasę z każdego punktu początkowego 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.

  • Aby określić, które pola odpowiedzi (REST) lub ComputeRoutesResponse (gRPC) mają zostać zwrócone, dołącz maskę pola odpowiedzi. W tym przykładzie skonfiguruj żądanie zwracania dla każdej trasy odpowiedzi originIndex, destinationIndex, duration, distanceMeters, status i condition. Więcej informacji znajdziesz w artykule o wybieraniu 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, używając 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

Na przykład żądania gRPC znajdziesz w przykładach żądania gRPC. Przykład w Javie na tej stronie wywołuje zarówno trasy Compute, jak i macierz tras Compute.