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 iWALKoraz 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 parametrpolygonFidelity, 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: MEDIUMlubLOWalbo 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śćtravelDurationmieści się w zakresie od1sdo3600s(DRIVE/TWO_WHEELER) lub7200s(WALK/BICYCLE), czy wartośćlocationnie została pominięta i nie jest równa(0, 0)(lub czy wartośćplacejest prawidłowym identyfikatorem miejsca) oraz czy wartośćTRAFFIC_AWAREjest używana tylko z wartościąDRIVElubTWO_WHEELER. Pominięty atrybutlatitudelublongitudejest traktowany jako0.0, więc pominięcie tylko jednego z nich zwykle nie powoduje błędu400(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ć lokalizacjiplacelub 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 przypadkuWALKiBICYCLE).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.