Określ, jak i czy chcesz uwzględniać dane o ruchu

Wybrany przez Ciebie rodzaj ruchu pozwala równoważyć dokładność szczegółów trasy i skuteczność żądań. Przesyłając prośbę, zastanów się, czy lepiej jest zwrócić jak najdokładniejsze wyniki czy jak najszybciej. Interfejs Routes API udostępnia opcje, które umożliwiają kontrolowanie jakości danych o odpowiedzi i czasu oczekiwania odpowiedzi.

Ustawianie poziomu ruchu

Interfejs Routes API udostępnia parametry RoutingPreference (REST) i RoutingPreference (gRPC), które umożliwiają określanie preferencji routingu przy obliczaniu tras. Ustawienia te różnią się tym, w jakim stopniu uwzględniają warunki na drodze do obliczania trasy. Każde ustawienie routingu powoduje wyniki różniące się zależnie od jakości trasy, szacowanego czasu dotarcia na miejsce i czasu oczekiwania na odpowiedź.

Warunki na drodze opisują prędkość ruchu. Na przykład:

  • Gdy nie ma korków, warunki drogowe są uznawane za normalne, a ruch odbywa się z normalną, niezakłóconą prędkością.
  • Przed godziną szczytu natężenie ruchu wzrasta, co powoduje jego zmniejszanie się, a warunky na drodze lekkiej do umiarkowanej.
  • W przypadku ruchu z bumpera na zderzak przepływ ruchu wstrzymuje się, co powoduje duże natężenie ruchu.

Nierozpoznany ruch

Gdy ustawisz ustawienie TRAFFIC_UNAWARE w trasie, trasy będą obliczane bez uwzględniania bieżących warunków na drodze. To ustawienie routingu zapewnia najkrótszy czas oczekiwania na odpowiedź (odpowiedzi są zwracane najszybciej).

Ustawienie domyślne to TRAFFIC_UNAWARE.

W odpowiedzi:

  • Szacowany czas dotarcia na miejsce jest zawarty we właściwości odpowiedzi duration.

  • Właściwości odpowiedzi duration i staticDuration zawierają tę samą wartość.

Użyj tego ustawienia routingu, jeśli chcesz, aby odpowiedzi były zwracane najszybciej, a przybliżone szczegóły routingu są wystarczające.

Informacje o ruchu

Gdy ustawisz preferencje routingu TRAFFIC_AWARE, trasy będą obliczane z uwzględnieniem bieżących warunków drogowych. Dzięki temu szczegóły trasy dokładniej odzwierciedlają rzeczywiste warunki. Ten wzrost jakości danych wiąże się z wydłużeniem czasu oczekiwania na odpowiedź, więc optymalizacja wydajności jest stosowana w celu zmniejszania tego opóźnienia.

W odpowiedzi:

  • Szacowany czas dotarcia na miejsce, który uwzględnia ruch w czasie rzeczywistym, jest zawarty we właściwości odpowiedzi duration.

  • Właściwość odpowiedzi staticDuration podaje czas podróży po trasie bez uwzględniania warunków drogowych.

Użyj tego ustawienia routingu, jeśli chcesz mieć dokładniejsze informacje o trasie niż TRAFFIC_UNAWARE, ale Ci nie przeszkadza, jeśli odpowiedzi są zwracane ze umiarkowanym wzrostem czasu oczekiwania.

Optymalna z uwzględnieniem ruchu

Gdy ustawisz preferencję routingu TRAFFIC_AWARE_OPTIMAL, trasy będą obliczane z uwzględnieniem bieżących warunków drogowych, ale nie będą optymalizować skuteczności. W tym trybie serwer przeprowadza bardziej szczegółowe wyszukiwanie sieci drogowej, aby znaleźć optymalną trasę.

Preferencje routingu TRAFFIC_AWARE_OPTIMAL odpowiadają trybowi używanemu na maps.google.com i w aplikacji mobilnej Mapy Google.

Gdy używasz tej opcji z matrycą tras Compute, liczba elementów w żądaniu (liczba punktów początkowych × liczba miejsc docelowych) nie może przekraczać 100. Więcej informacji o limitach macierzy tras Compute znajdziesz w artykule Obliczanie macierzy tras.

W odpowiedzi:

  • Szacowany czas dotarcia na miejsce, który uwzględnia ruch w czasie rzeczywistym, jest zawarty we właściwości odpowiedzi duration.

  • Właściwość odpowiedzi staticDuration podaje czas podróży po trasie bez uwzględniania warunków drogowych.

To ustawienie routingu zapewnia najwyższy czas oczekiwania na odpowiedź (czyli odpowiedzi z najdłuższym opóźnieniem). Używaj tego ustawienia, jeśli chcesz uzyskać wyniki o najwyższej jakości, bez względu na to, jak długo trwa odpowiedź.

Wpływ ustawienia godziny odjazdu

Opcjonalnie możesz użyć właściwości departureTime, aby ustawić godzinę wyjazdu. Jeśli nie ustawisz właściwości departureTime, domyślnie zostanie użyta godzina przesłania żądania.

  • W przypadku właściwości TRAFFIC_UNAWARE nie można ustawić wartości departureTime, ponieważ wybór trasy i czasu podróży zależy od sieci drogowej i średnich warunków drogowych niezależnych w czasie.

  • W przypadku TRAFFIC_AWARE i TRAFFIC_AWARE_OPTIMAL, które uwzględniają warunki na żywo, rzeczywisty ruch staje się coraz ważniejszy, im bliżej jest teraz departureTime. Im bardziej oddalona jest godzina odjazdu w przyszłości, tym bardziej historyczne warunki natężenia ruchu są brane pod uwagę.

Przykład ustawienia preferencji routingu

Poniższy kod JSON pokazuje, jak ustawić preferencje routingu w treści encji wiadomości żądania.

{
  "origin":{
    "location":{
      "latLng":{
        "latitude":37.419734,
        "longitude":-122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":37.417670,
        "longitude":-122.079595
      }
    }
  },
  "travelMode":"DRIVE",
  "routingPreference":"TRAFFIC_AWARE_OPTIMAL"
}

Skonfiguruj jakość linii łamanej

Interfejs Routes API umożliwia wysyłanie żądań dotyczących informacji o natężeniu ruchu przesyłanych przez linię poligraficzną wykrywającą ruch. Więcej informacji znajdziesz w sekcji Wiersze łamane żądań.

Jakość linii łamanej można opisać takimi terminami:

  • Liczba punktów tworzących linię łamaną

    Im więcej punktów, tym gładsza linia łamana (zwłaszcza w przypadku krzywych).

  • Dokładność punktów zmiennoprzecinkowych

    Punkty są określane za pomocą długości i szerokości geograficznej, w formacie zmiennoprzecinkowym z jedną precyzją. Sprawdza się to w przypadku małych wartości (które można dokładnie przedstawić), ale wraz ze wzrostem wartości precyzja spada z powodu błędów zaokrąglania liczb zmiennoprzecinkowych.

Metody computeRoutes (REST) i metody ComputeRoutes (gRPC) obsługują opcję żądania polylineQuality do kontrolowania jakości linii łamanych.

Przykład ustawienia jakości linii łamanej

polylineQuality określa jakość linii łamanej jako HIGH_QUALITY lub OVERVIEW (domyślna). W OVERVIEW linia łamana składa się z niewielkiej liczby punktów i ma krótszy czas oczekiwania na żądanie niż HIGH_QUALITY.

Na przykład w treści żądania:

{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE",
  "polylineQuality": "HIGH_QUALITY",
  "polylineEncoding": "ENCODED_POLYLINE", 
  "departureTime": "2023-10-15T15:01:23.045123456Z",
  ...
}