Pobieranie macierzy tras

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Użyj interfejsu Routes API, aby obliczyć odległość i czas trwania trasy dla wielu punktów początkowych i docelowych, wywołując metodę computeRouteMatrix (REST) lub metodę przesyłania strumieniowego ComputeRouteMatrix (gRPC).

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

Pobieranie macierzy tras transportu publicznego

Możesz też obliczyć macierz trasy w przypadku transportu publicznego. Przykład znajdziesz w artykule Uzyskiwanie macierzy tras transportu publicznego.

Limity żądań

Metody Compute Route Matrix wymuszają te limity żądań dotyczące punktów pośrednich z użyciem adresów lub identyfikatorów miejsc oraz elementów. Elementy to trasy między poszczególnymi punktami początkowymi i docelowymi w macierzy tras, więc liczba elementów to liczba punktów początkowych razy liczba punktów docelowych. Jeśli na przykład masz 10 punktów początkowych i 10 punktów 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 TRANSITtrasę, 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 sposobu uwzględniania danych o ruchu i tego, czy mają być uwzględniane.

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

Błędy odpowiedzi

Jedną z cech metod Compute Route Matrix jest to, że błędy mogą być zwracane dla całej odpowiedzi lub dla poszczególnych elementów odpowiedzi. Na przykład cała odpowiedź zawiera błąd, jeśli żądanie jest nieprawidłowo sformułowane (np. zawiera zero punktów początkowych).

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), kod błędu zwracają tylko elementy, których dotyczy błąd.

Wyniki strumienia gRPC

Metoda gRPC ComputeRouteMatrix przyjmuje listę punktów początkowych i docelowych oraz 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ż zostaną obliczone wszystkie możliwe kombinacje tras, aby rozpocząć ich przetwarzanie.

Elementy zwracane przez strumień nie muszą być zwracane w określonej kolejności. Dlatego każdy element odpowiedzi zawiera elementy origin_indexdestination_index. W przypadku miejsc wyjazdu i miejsc docelowych określonych w żądaniu miejsce wyjazdu jest równoważne origins[origin_index] w przypadku danego elementu, a miejsce docelowe jest równoważne destinations[destination_index]. Tablice są indeksowane od zera. Ważne jest, aby przechowywać kolejność list miejsc docelowych i źródłowych.

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ę 2 punktów pośrednich w miejscu odjazdu i 2 punktów pośrednich w miejscu docelowym. Metoda oblicza trasę z każdego punktu początkowego do każdego punktu 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 parametry originIndex, destinationIndex, duration, distanceMeters, statuscondition 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 pośrednich pochodzenia i miejsca docelowego.

Każdą trasę w odpowiedzi możesz zidentyfikować za pomocą pól odpowiedzi originIndexdestinationIndex. Na przykład wartość originIndex 1 w odpowiedzi odpowiada trasie obliczonej na podstawie punktu pośredniego o indeksie 1 w tablicy originIndex w żądaniu.origins

[
    {
        "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 w przypadku żądań gRPC zapoznaj się z przykładami w artykule Przykładowe żądanie gRPC. Przykład w języku Java na tej stronie wywołuje zarówno interfejs Compute Routes, jak i Compute Route Matrix.