Pobieranie macierzy tras

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Użyj interfejsu Routes API, aby obliczyć odległość i czas trwania trasy dla wielu miejsc rozpoczęcia i zakończenia podróży, wywołując metodę computeRouteMatrix (REST) lub metodę strumieniową 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 się w każdym punkcie docelowym.

Pobieranie macierzy tras transportu publicznego

Możesz też obliczyć macierz tras dla transportu publicznego. Przykład znajdziesz w artykule Pobieranie macierzy tras transportu publicznego.

Limity żądań

Metody Compute Route Matrix wymuszają te limity żądań dotyczące punktów pośrednich, które używają adresów lub identyfikatorów miejsc, oraz elementów. Elementy to trasy między każdym miejscem początkowym a docelowym w macierzy tras, więc liczba elementów to liczba miejsc początkowych pomnożona przez liczbę miejsc docelowych. Jeśli na przykład masz 10 miejsc 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 przekraczać 100.

  • Jeśli określisz TRAFFIC_AWARE_OPTIMAL, liczba elementów nie może przekraczać 100. Więcej informacji o TRAFFIC_AWARE_OPTIMAL znajdziesz w artykule Określanie, czy i jak uwzględniać dane o ruchu.

  • Jeśli określasz miejsca początkowe lub docelowe za pomocą adresu lub identyfikatora miejsca, możesz w ten sposób podać maksymalnie 50 miejsc.

Błędy odpowiedzi

Jedną z funkcji metod Compute Route Matrix jest to, że błędy mogą być zwracane w przypadku całej odpowiedzi lub poszczególnych elementów odpowiedzi. Jeśli na przykład żądanie jest nieprawidłowo sformułowane (np. nie zawiera żadnych punktów początkowych), 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 rozpoczęcia i zakończenia podróży), kod błędu zwracają tylko elementy, których dotyczy błąd.

Wyniki strumienia gRPC

Metoda gRPC ComputeRouteMatrix przyjmuje listę miejsc rozpoczęcia i zakończenia podróży oraz zwraca strumień zawierający informacje o trasie dla każdej kombinacji miejsca rozpoczęcia i zakończenia podróży. Wyniki są zwracane w postaci strumienia, więc nie musisz czekać na obliczenie wszystkich możliwych kombinacji tras, zanim zaczniesz przetwarzać wyniki.

Nie ma gwarancji, że elementy zwracane przez strumień będą zwracane w określonej kolejności. Dlatego każdy element odpowiedzi zawiera origin_index i destination_index. W przypadku miejsc początkowych i docelowych określonych w żądaniu miejsce początkowe trasy odpowiada origins[origin_index] dla danego elementu, a miejsce docelowe trasy odpowiada destinations[destination_index]. Te tablice są indeksowane od zera. Ważne jest, aby przechowywać zamówienia z listy ź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:

  • Określ tablicę z 2 punktami początkowymi i 2 punktami docelowymi. Metoda oblicza trasę z każdego miejsca wyjazdu do każdego miejsca docelowego, więc odpowiedź zawiera 4 trasy.

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

  • Dołącz 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 originIndex, destinationIndex, duration, distanceMeters, status i condition dla każdej trasy. 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 dla kombinacji wszystkich punktów orientacyjnych miejsca początkowego i docelowego.

Zidentyfikuj każdą trasę w odpowiedzi, używając pól odpowiedzi originIndex i destinationIndex. Na przykład wartość originIndex równa 1 w odpowiedzi odpowiada trasie obliczonej na podstawie punktu pośredniego 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

Przykładowe żądania gRPC znajdziesz w artykule Przykładowe żądanie gRPC. Przykład w Javie na tej stronie wywołuje zarówno Compute Routes, jak i Compute Route Matrix.