Obliczanie macierzy tras

Odległość i czas trwania trasy dla wielu miejsc pochodzenia i miejsc docelowych możesz obliczyć za pomocą metody ComputeRouteMatrix interfejsu Routes Preferred API. ComputeRouteMatrix obsługuje zarówno strumieniowe wywołania gRPC, jak i wywołania HTTP REST.

Na podstawie listy par „miejsce wylotu” i „miejsce docelowe” funkcja ComputeRouteMatrix oblicza odległość i czas trwania trasy, która zaczyna się w każdym miejscu wylotu i kończy w każdym miejscu docelowym. Każdy element strumienia odpowiada informacjom dotyczącym jednej trasy.

Metoda ComputeRouteMatrix ma kilka zalet w porównaniu z usługą Distance Matrix Service:

  • Strumieniowanie umożliwia zwracanie elementów przed obliczeniem całej macierzy, co zmniejsza opóźnienie.
  • ComputeRouteMatrix oferuje szczegółowe opcje obliczania ruchu, dzięki którym możesz podejmować decyzje dotyczące kompromisu między jakością a opóźnieniem.
  • Żądania są wykonywane z wyższym priorytetem w infrastrukturze Google, co zapewnia większą dostępność.
  • Wskazówki (kierunek jazdy) i informacje o stronie drogi można określić dla punktów drogi.
  • Możesz poprosić o zwrot informacji o opłatach drogowych, a także odległości i szacowanego czasu dotarcia.

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 Trasy preferowane v1.

Aby dowiedzieć się więcej, zapoznaj się z tymi dokumentami:

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

Podane niżej ogólne kroki opisują, jak użyć gRPC do wywołania metody ComputeRouteMatrix:

  1. Pobierz 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ą wykonać to automatycznie.

  2. Za pomocą preferowanego języka i zestawu narzędzi do kompilacji wygeneruj odpowiedni kod protobufora.

  3. Wygeneruj prośbę. Wraz z tą prośbą należy przesłać 2 elementy metadanych:

    • Wartość X-Goog-Api-Key musi być ustawiona na klucz interfejsu API.
    • Parametr X-Goog-Fieldmask musi być ustawiony jako rozdzielona przecinkami lista pól, których potrzebujesz w odpowiedzi. 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 znaku wieloznacznego, aby przetestować i zrozumieć odpowiedź interfejsu API, ale w kodzie produkcyjnym wyraźnie podaj pola, które Cię interesują, 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 pól, których nie potrzebujesz, może zmniejszyć opóźnienie, ponieważ te pola mogą wymagać dalszych obliczeń. Opóźnienie będzie 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ę do routespreferred.googleapis.com:443.Musisz użyć protokołu TLS.

Przykłady korzystania z metody ComputeRouteMatrix znajdziesz w artykule Przykłady obliczania macierzy tras (wersja beta).

Jedną z cech charakterystycznych 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 strumienia zwraca błąd, jeśli żądanie ma nieprawidłowy format (np. ma zero źródeł). Jeśli jednak błąd dotyczy tylko kilku elementów strumienia (np. nieprawidłowe ustawienie identyfikatora miejsca docelowego), tylko te elementy zawierają kody błędów.

Nie ma gwarancji, że elementy zwrócone przez strumień będą zwracane w żadnej kolejności. Dlatego każdy element zawiera element origin_indexdestination_index. W przypadku źródeł i miejsc docelowych określonych w żądaniu źródło trasy jest równoważne z origins[origin_index] dla danego elementu, a miejsce docelowe trasy jest równoważne z destinations[destination_index]. Te tablice są indeksowane od zera. Ważne jest przechowywanie zamówień na listy miejsc początkowych i docelowych.

Obliczanie opłat za przejazd autostradą

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.