Pobieranie macierzy tras

Użyj interfejsu Routes API, aby obliczyć odległość i czas trwania trasy dla wielu miejsc wylotu i przylotu, wywołując metodę computeRouteMatrix (REST) lub metodę strumieniowego ComputeRouteMatrix (gRPC).

Na podstawie listy punktów początkowych i docelowych metoda oblicza odległość i czas trwania trasy rozpoczynającej się w każdym punkcie początkowym i kończącej w każdym punkcie docelowym.

Pobieranie macierzy tras przejazdu

Możesz też obliczyć macierz tras w transporcie zbiorowym. Przykład znajdziesz w artykule Pozyskiwanie macierzy tras w przypadku transportu publicznego.

Limity żądań

Metody obliczania macierzy trasy narzucają te limity zapytań dotyczące punktów pośrednich z użyciem adresu lub identyfikatorów miejsca docelowego oraz elementów. Elementy to trasy między każdym punktem początkowym a docelowym w macierzy tras, więc liczba elementów to liczba punktów początkowych pomnożona przez liczbę punktów 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 TRANSIT.

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

  • Jeśli określisz wartość TRAFFIC_AWARE_OPTIMAL, liczba elementów nie może przekraczać 100. Więcej informacji o TRAFFIC_AWARE_OPTIMAL znajdziesz w artykule Określanie sposobu i czasu uwzględniania danych o 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łowo sformułowane (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 miejsca pochodzenia i miejsca docelowego), tylko elementy, których dotyczy błąd, zwracają kod błędu.

Wyniki strumienia gRPC

Metoda gRPC ComputeRouteMatrix przyjmuje listę źródeł i miejsc docelowych, a następnie zwraca strumień zawierający informacje o trasie dla każdej kombinacji źródła i miejsca docelowego. Wyniki są zwracane jako strumień, 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ń będą zwracane 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] Te tablice są indeksowane od zera. Ważne jest, aby 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. Metoda oblicza trasę z każdego miejsca pochodzenia do każdego miejsca docelowego, więc odpowiedź zawiera 4 trasy.

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

  • Uwzględnij maskę pola odpowiedzi, aby określić, które pola odpowiedzi (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 zwracania.

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 funkcję Compute Routes, jak i macierz Compute Route.