Obliczanie macierzy tras

Możesz obliczyć odległość i czas trwania trasy dla wielu punktów 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 REST HTTP.

Na podstawie listy par punktów początkowych i docelowych ComputeRouteMatrix 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. Każdy element strumienia odpowiada informacjom o jednej trasie.

Metoda ComputeRouteMatrix ma kilka zalet w porównaniu z interfejsem Distance Matrix API (starsza wersja):

  • Strumieniowanie umożliwia zwracanie elementów przed obliczeniem całej macierzy, co zmniejsza opóźnienie.
  • ComputeRouteMatrix ma szczegółowe opcje obliczania natężenia ruchu, dzięki czemu możesz podejmować decyzje dotyczące kompromisu między jakością a opóźnieniem.
  • Żądania są realizowane z wyższym priorytetem w infrastrukturze Google, co skutkuje wyższą dostępnością.
  • Możesz określić kierunek (kierunek jazdy) i informacje o stronie drogi dla punktów na trasie.
  • Możesz poprosić o informacje o opłatach, a także o odległość trasy i szacowany czas dotarcia na miejsce.

Włączanie metody ComputeRouteMatrix

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

Używanie metody ComputeRouteMatrix

Metoda ComputeRouteMatrix jest dostępna w punkcie końcowym Routes Preferred v1.

Szczegółowe informacje znajdziesz w tych dokumentach:

thought 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 opisujemy ogólne kroki, które należy wykonać, aby wywołać metodę ComputeRouteMatrix za pomocą gRPC:

  1. Pobierz niezbędne bufory protokołów z repozytorium googleapis:

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

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

  2. Używając preferowanego języka i zestawu narzędzi do kompilacji, wygeneruj odpowiedni kod protobuffera.

  3. Wygeneruj prośbę. Wraz z żądaniem należy wysłać 2 wymagane metadane:

    • Wartość X-Goog-Api-Key musi być ustawiona na klucz interfejsu API.
    • Parametr X-Goog-Fieldmask musi być ustawiony na listę pól, których potrzebujesz z odpowiedzi, rozdzielonych przecinkami. Na przykład: X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status. Możesz użyć symbolu wieloznacznego (*), aby oznaczyć wszystkie pola, ale nie jest to zalecane. Użyj symbolu wieloznacznego, aby przetestować i zrozumieć odpowiedź interfejsu API, ale w kodzie produkcyjnym wyraźnie wymień pola, które chcesz uwzględnić w masce pola.

      Więcej informacji o tworzeniu ciągu maski pola znajdziesz na stronie https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto. Pamiętaj, że wyłączenie niepotrzebnych pól może zmniejszyć opóźnienie, ponieważ te pola mogą wymagać dodatkowych obliczeń. Opóźnienie pozostanie stabilne, jeśli określisz potrzebne pola, a nowe pola, które wymagają więcej obliczeń, zostaną dodane później.

  4. Wyślij prośbę na adres routespreferred.googleapis.com:443.Musisz użyć protokołu TLS.

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

Jedną z cech wyróżniających metodę ComputeRouteMatrix jest to, że kody błędów mogą być zwracane dla całego strumienia lub dla poszczególnych elementów. Na przykład połączenie strumieniowe zwraca błąd, jeśli żądanie jest nieprawidłowo sformułowane (np. nie ma źródeł). Jeśli jednak błąd dotyczy tylko kilku elementów strumienia (np. ustawienia nieprawidłowego identyfikatora miejsca dla punktu początkowego), kody błędów będą zawierać tylko elementy, których dotyczy błąd.

Nie ma gwarancji, że elementy zwracane przez strumień będą zwracane w określonej kolejności. Z tego powodu każdy element 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 zachować kolejność list źródłowych i docelowych.

Obliczanie opłat drogowych

Informacje o obliczaniu opłat za przejazd znajdziesz w artykule Obliczanie opłat za przejazd.

Przykłady obliczania opłat za przejazd znajdziesz w artykule Przykłady obliczania macierzy tras.