Sprawdzone metody korzystania z interfejsu Isochrones API

Wygładzanie i dokładność

Możesz dostosować wygląd i dokładność wielokątów wyjściowych za pomocą parametrów polygon_fidelity i enable_smoothing. Chociaż te opcje są niezależne, współdziałają ze sobą, aby określić ostateczny kształt.

  • polygonFidelity (polygon_fidelity): rozdzielczość. Określa rozmiar komórek siatki przestrzennej używanych do obliczania obszaru, do którego można dotrzeć.

    • LOW: używa największych komórek siatki (o szerokości kilkuset metrów). Najlepiej sprawdza się w przypadku pokrywania dużych obszarów bez przerw i minimalizowania liczby wierzchołków, co skutkuje uogólnionym kształtem, który może przeszacować obszar możliwy do osiągnięcia wzdłuż wąskich korytarzy drogowych.
    • MEDIUM: zrównoważona precyzja i rozmiar ładunku.
    • HIGH: używa najmniejszych komórek siatki (około 100–150 metrów). Zapewnia lepsze dopasowanie do sieci dróg i większą liczbę wierzchołków, ale może powodować powstawanie wewnętrznych otworów w miejscach, gdzie sieć dróg jest rzadka.
    • Domyślna (POLYGON_FIDELITY_UNSPECIFIED): jeśli nie zostanie określona, usługa automatycznie wybierze rozdzielczość na podstawie środka transportu i czasu trwania, używając mniejszych komórek w przypadku krótkiego czasu trwania i WALK oraz większych komórek w przypadku długiego czasu trwania. Aby porównać izochrony dla różnych czasów trwania lub środków transportu, ustaw parametr polygonFidelity, aby używały tej samej rozdzielczości.

    Rozmiary komórek są przybliżone. Bardzo duże izochrony mogą być dodatkowo uogólniane, aby rozmiar odpowiedzi był łatwy do zarządzania.

  • enableSmoothing (enable_smoothing): estetyka. Określa, czy schodkowe krawędzie komórek siatki zdefiniowane przez dokładność są zaokrąglone.
    • false (Raw): zwraca granicę wyrównaną do siatki. Krawędzie są poszarpane lub schodkowe, co odzwierciedla komórki siatki. Najlepsze rozwiązanie do dokładnych analiz, takich jak rygorystyczne testy punktu w wielokącie.
    • true (wygładzone): zaokrągla rogi, zachowując przy tym w przybliżeniu obszar każdego pierścienia. Najlepsza opcja do wyświetlania na mapach. Ponieważ granica nie jest już zgodna z komórkami siatki, nie używaj jej do rygorystycznych testów punktu w wielokącie.

Jak ze sobą współdziałają: wierność określa podstawowy poziom szczegółowości, na którym działa algorytm wygładzania.

  • Wysoka wierność + wygładzanie: tworzy szczegółowy, naturalnie wyglądający kształt, który dokładnie odzwierciedla zakończenia dróg.
  • Niska dokładność + wygładzanie: tworzy szeroki, ogólny kształt „plamy”.

Rozmiar ładunku i renderowanie

Duże izochrony (zwłaszcza żądania o długim czasie trwania z dokładnością HIGH) mogą zawierać dziesiątki tysięcy współrzędnych, a nieskompresowana odpowiedź JSON może mieć kilkaset kilobajtów lub więcej.

  • Przepustowość: pamiętaj, że rozmiar odpowiedzi JSON jest znaczny w przypadku żądań o maksymalnym czasie trwania i wysokiej jakości.
  • Renderowanie: renderowanie bardzo szczegółowych wielokątów wpływa na wydajność klienta. Aby zmniejszyć liczbę wierzchołków i rozmiar ładunku, wybierz polygonFidelity: MEDIUM lub LOW albo uprość geometrię po stronie klienta przed renderowaniem, używając algorytmu upraszczania linii, takiego jak Douglas-Peucker.

Czas oczekiwania i limity czasu klienta

Czas oczekiwania na odpowiedź rośnie wraz z rozmiarem sieci dróg: najszybsze są krótkie czasy trwania oraz tryby WALK i BICYCLE, a najdłuższe są żądania DRIVE i TWO_WHEELER (zwłaszcza z TRAFFIC_AWARE).

  • Zalecany limit czasu klienta: skonfiguruj terminy klienta HTTP lub gRPC na co najmniej 30 sekund, aby długie żądania nie były przerywane przedwcześnie przez krótki limit czasu klienta.

Obsługa błędów

Zaimplementuj mechanizm logiczny ponawiania ze wzrastającym czasem do ponowienia i wahaniami w przypadku odpowiedzi dotyczących limitu liczby żądań 429 RESOURCE_EXHAUSTED i błędów serwera 5xx. Nie ponawiaj prób w przypadku błędów klienta 400, 403 lub 404 bez zmiany żądania:

  • INVALID_ARGUMENT (400): sprawdź, czy wartość travelDuration mieści się w zakresie od 1s do 3600s (DRIVE/TWO_WHEELER) lub 7200s (WALK/BICYCLE), czy wartość location nie została pominięta i nie jest równa (0, 0) (lub czy wartość place jest prawidłowym identyfikatorem miejsca) oraz czy wartość TRAFFIC_AWARE jest używana tylko z wartością DRIVE lub TWO_WHEELER. Pominięty atrybut latitude lub longitude jest traktowany jako 0.0, więc pominięcie tylko jednego z nich zwykle nie powoduje błędu 400 (chyba że druga wartość to również 0.0). Jeśli izochrona pojawia się w niewłaściwym miejscu, sprawdź obie wartości.
  • PERMISSION_DENIED (403): sprawdź, czy klucz interfejsu API lub token OAuth jest dołączony oraz czy interfejs Isochrones API i płatności są włączone w projekcie Google Cloud.
  • NOT_FOUND (404): nie udało się ustalić lokalizacji place lub nie udało się przyciągnąć punktu początkowego do pobliskiej drogi, którą można pokonać w danym trybie podróży (w odległości około 200 metrów lub mniejszej w przypadku WALK i BICYCLE).
  • RESOURCE_EXHAUSTED (429): Twój projekt przekroczył limit żądań na minutę (domyślnie 300 żądań na minutę). Podejmuje ponowne próby ze wzrastającym czasem do ponowienia.