Obliczanie macierzy tras

Możesz obliczyć odległość i czas trwania trasy dla wielu miejsc początkowych i docelowych, korzystając z metody ComputeRouteMatrix interfejsu Routes Preferred API. ComputeRouteMatrix obsługuje zarówno strumieniowe wywołania gRPC, jak i wywołania HTTP REST.

Biorąc pod uwagę listę par miejsc wylotu i celu podróży, ComputeRouteMatrix oblicza odległość i czas trwania trasy, która rozpoczyna się w miejscu wylotu i kończy w miejscu docelowym. Każdy element strumienia odpowiada informacjom o pojedynczej trasie.

Metoda ComputeRouteMatrix ma kilka zalet w porównaniu z usługą macierzy odległości:

  • Strumieniowe przesyłanie elementów umożliwia zwrócenie elementów przed obliczeniem całej macierzy, co zmniejsza opóźnienie.
  • ComputeRouteMatrix ma szczegółowe opcje obliczania ruchu, co pozwala podjąć decyzję o zmniejszeniu jakości i czasu oczekiwania.
  • Żądania są uruchamiane z wyższym priorytetem w infrastrukturze Google, co skutkuje większą dostępnością.
  • Dla punktów na trasie można określić kierunek (kierunek podróży) oraz informacje o bokach drogi.
  • Możesz poprosić o zwrot informacji o opłatach, a także o odległość trasy i szacowany czas dotarcia na miejsce.

Włącz metodę ComputeRouteMatrix

Zanim użyjesz w kodzie metody ComputeRouteMatrix, musisz ją włączyć. Więcej informacji o włączaniu metod interfejsu Routes Preferred API znajdziesz w wprowadzeniu.

Korzystanie z metody ComputeRouteMatrix

Metoda ComputeRouteMatrix jest dostępna za pośrednictwem punktu końcowego Preferowane trasy v1.

Bardziej szczegółowe informacje znajdziesz w tej dokumentacji:

gRPC: https://developers.google.com/maps/documentation/routes_preferred/reference/rpc/google.maps.routes.v1

REST: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/v1/TopLevel/computeRouteMatrix

Poniżej znajdziesz ogólny opis sposobu wywoływania metody ComputeRouteMatrix za pomocą gRPC:

  1. Sprawdź niezbędne protobufory z repozytorium googleapis:

    https://github.com/googleapis/googleapis/tree/master/google/maps/routes

    Pamiętaj, że niektóre systemy kompilacji, takie jak Go, mogą zrobić to automatycznie.

  2. Korzystając z własnego języka i zestawu narzędzi do kompilacji, wygeneruj odpowiedni kod protokołu bufora.

  3. Wygeneruj żądanie. Wraz z żądaniem należy przesłać 2 wymagane elementy metadanych:

    • Musisz ustawić X-Goog-Api-Key na klucz interfejsu API.
    • W polu X-Goog-Fieldmask należy podać rozdzielaną przecinkami listę pól, które są wymagane w odpowiedzi. Na przykład X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status. Możesz użyć symbolu wieloznacznego (*), aby oznaczyć wszystkie pola, ale jest to niezalecane. Użyj symbolu wieloznacznego, aby przetestować i zrozumieć odpowiedź interfejsu API, ale jawnie wymień pola, które chcesz umieścić w masce pól w kodzie produkcyjnym.

      Więcej informacji o tworzeniu ciągu maski pól znajdziesz na https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto. Pamiętaj, że wyłączenie niepotrzebnych pól może skrócić czas oczekiwania, ponieważ te pola mogą wymagać dalszych obliczeń. Jeśli określisz potrzebne pola, czas oczekiwania będzie stabilny, a później dodamy nowe pola, które wymagają więcej obliczeń.

  4. Wyślij żądanie do usługi routespreferred.googleapis.com:443.Musisz użyć protokołu TLS.

Przykłady użycia metody ComputeRouteMatrix znajdziesz w sekcji Obliczanie macierzy tras (beta).

Jedną z charakterystycznych cech metody ComputeRouteMatrix jest to, że kody błędów mogą być zwracane w przypadku całego strumienia lub poszczególnych elementów. Na przykład połączenie strumienia zwraca błąd, jeśli żądanie ma nieprawidłowy format (np. nie ma żadnych źródeł pochodzenia). Jeśli jednak błąd dotyczy tylko kilku elementów strumienia (np. jest ustawiony nieprawidłowy identyfikator miejsca dla źródła), kody błędów będą zawierać tylko te elementy, których on dotyczy.

Nie gwarantujemy, że elementy zwrócone przez strumień będą zwracane w żadnej kolejności. Z tego względu każdy element zawiera origin_index i destination_index. W przypadku punktów początkowych i miejsc docelowych określonych w żądaniu początek trasy jest odpowiednikiem origins[origin_index] dla danego elementu, a miejsce docelowe trasy jest równoważne z destinations[destination_index]. Te macierze są typu zero-indeks. Przechowywanie zamówień na liście miejsc wylotu i listy miejsc docelowych jest ważne.

Obliczanie opłat drogowych

Więcej informacji o obliczaniu opłat drogowych znajdziesz w artykule Obliczanie opłat drogowych.

Przykłady obliczania opłat drogowych znajdziesz w sekcji Obliczanie przykładowych macierzy tras.