Obliczanie macierzy tras

Za pomocą metody ComputeRouteMatrix interfejsu Routes Preferred API możesz obliczyć odległość i czas trwania trasy dla wielu źródeł i miejsc docelowych. ComputeRouteMatrix obsługuje zarówno strumieniowe przesyłanie wywołań gRPC, jak i wywołania HTTP REST.

Biorąc pod uwagę listę par punktu początkowego i docelowego, ComputeRouteMatrix oblicza odległość i czas trwania trasy, która zaczyna się w każdym punkcie początkowym i kończy w każdym 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:

  • Strumieniowanie umożliwia zwrócenie elementów przed obliczeniem całej macierzy, co zmniejsza opóźnienie.
  • ComputeRouteMatrix udostępnia szczegółowe opcje obliczania ruchu, co pozwala podejmować decyzje dotyczące kompromisu między jakością a czasem oczekiwania.
  • Żądania są uruchamiane z wyższym priorytetem w infrastrukturze Google, co skutkuje większą dostępnością.
  • Dla punktów pośrednich możesz określić kierunki podróży i informacje o bokach drogi.
  • Możesz poprosić o przesłanie informacji o opłatach, w tym o odległości trasy i szacowanym czasie dotarcia na miejsce.

Włączanie metody ComputeRouteMatrix

Zanim użyjesz w kodzie metody ComputeRouteMatrix, musisz ją włączyć. Więcej informacji o włączaniu preferowanych metod interfejsu API tras znajdziesz w pierwszych krokach.

Korzystanie z metody ComputeRouteMatrix

Metoda ComputeRouteMatrix jest dostępna przez punkt końcowy Preferowane trasy v1.

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ższe kroki ogólne opisują, jak używać gRPC do wywoływania metody ComputeRouteMatrix:

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

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

    Pamiętaj, że niektóre systemy kompilacji, na przykład Go, mogą zrobić to automatycznie.

  2. Wygeneruj odpowiedni kod bufora protokołu, używając preferowanego języka i zestawu narzędzi do kompilacji.

  3. Wygeneruj prośbę. Razem z żądaniem należy przesłać 2 wymagane fragmenty metadanych:

    • Wartość X-Goog-Api-Key musi być ustawiona na klucz interfejsu API.
    • W polu X-Goog-Fieldmask należy ustawić rozdzieloną przecinkami listę pól wymaganych w odpowiedzi. Na przykład X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status. Możesz używać symbolu wieloznacznego (*) do oznaczenia wszystkich pól, ale nie jest to zalecane. Do testowania i interpretowania odpowiedzi interfejsu API używaj symbolu wieloznacznego, ale jawnie wymień pola, które chcesz umieścić w masce pola w kodzie produkcyjnym.

      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ć czas oczekiwania, ponieważ te pola mogą wymagać dalszych obliczeń. Czas oczekiwania pozostaje stabilny, jeśli określisz wymagane pola. Dodamy później nowe pola, które wymagają więcej obliczeń.

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

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

Wyróżniającą się cechą metody ComputeRouteMatrix jest to, że kody błędów mogą być zwracane dla całego strumienia lub poszczególnych elementów. Na przykład połączenie strumienia zwraca błąd, jeśli żądanie jest uszkodzone (np. ma zerowe źródło). Jeśli jednak błąd dotyczy tylko kilku elementów strumienia (np. ustawienie nieprawidłowego identyfikatora miejsca dla źródła), wtedy tylko elementy, których on dotyczy, zawierają kody błędów.

Nie ma gwarancji, że elementy zwracane przez strumień zostaną zwrócone w dowolnej kolejności. Dlatego każdy element zawiera atrybuty origin_index i destination_index. W przypadku punktów początkowych i przylotów określonych w żądaniu początek trasy dla danego elementu odpowiada wartości origins[origin_index], a miejsce docelowe trasy jest równoważne parametrowi destinations[destination_index]. Tablice te mają indeks zerowy. Ważne jest przechowywanie zamówień list miejsc wylotu i miejsc docelowych.

Obliczam opłaty za przejazd

Aby dowiedzieć się, jak obliczać opłaty, przeczytaj artykuł Obliczanie opłat drogowych.

Przykłady obliczania opłat drogowych znajdziesz w tym artykule.