Praktik terbaik Isochrones API

Penghalusan dan fidelitas

Anda dapat menyesuaikan tampilan dan presisi poligon output menggunakan parameter polygon_fidelity dan enable_smoothing. Meskipun opsi ini independen, opsi ini bekerja sama untuk menentukan bentuk akhir.

  • polygonFidelity (polygon_fidelity): Resolusi. Mengontrol ukuran sel petak spasial yang mendasarinya yang digunakan untuk menghitung area yang dapat dijangkau.

    • LOW: Menggunakan sel petak terbesar (lebar beberapa ratus meter). Paling cocok untuk mencakup area yang luas tanpa celah dan meminimalkan jumlah verteks, sehingga menghasilkan bentuk umum yang dapat melebih-lebihkan area yang dapat dijangkau di sepanjang koridor jalan yang sempit.
    • MEDIUM: Presisi dan ukuran payload yang seimbang.
    • HIGH: Menggunakan sel petak terkecil (lebar sekitar 100-150 meter). Menghasilkan kecocokan yang lebih ketat dengan jaringan jalan, dengan lebih banyak verteks, tetapi dapat menghasilkan lubang interior di tempat jaringan jalan jarang.
    • Default (POLYGON_FIDELITY_UNSPECIFIED): Jika tidak ditentukan, layanan akan memilih resolusi secara otomatis berdasarkan mode dan durasi perjalanan, menggunakan sel yang lebih halus untuk durasi singkat dan untuk WALK, serta sel yang lebih kasar untuk durasi panjang. Untuk membandingkan isochrone di berbagai durasi atau mode perjalanan, tetapkan polygonFidelity secara eksplisit agar menggunakan resolusi yang sama.

    Ukuran sel merupakan perkiraan. Isochrones yang sangat besar mungkin digeneralisasi lebih lanjut untuk menjaga ukuran respons tetap dapat dikelola.

  • enableSmoothing (enable_smoothing): Estetika. Mengontrol apakah tepi bertingkat sel petak yang ditentukan oleh fidelitas dibulatkan.
    • false (Raw): Menampilkan batas yang sejajar dengan petak. Tepi tampak bergerigi atau berundak, yang mencerminkan sel petak. Paling cocok untuk akurasi analisis, seperti pengujian titik dalam poligon yang ketat.
    • true (Dihaluskan): Membulatkan sudut sambil mempertahankan perkiraan area setiap cincin. Paling cocok untuk tampilan visual di peta. Karena batas tidak lagi mengikuti sel petak, jangan gunakan batas tersebut untuk pengujian titik dalam poligon yang ketat.

Cara interaksinya: Fidelitas menetapkan detail dasar pengukuran yang menjadi dasar tindakan algoritma penghalusan.

  • Fidelitas Tinggi + Penghalusan: Menghasilkan bentuk yang mendetail dan terlihat organik yang mengikuti ujung jalan dengan cermat.
  • Low Fidelity + Smoothing: Menghasilkan bentuk "gumpalan" yang luas dan umum.

Ukuran payload dan rendering

Isokron besar (terutama permintaan berdurasi panjang dengan fidelitas HIGH) dapat berisi puluhan ribu koordinat, dan respons JSON yang tidak dikompresi dapat berukuran beberapa ratus kilobyte atau lebih.

  • Bandwidth: Perhatikan bahwa ukuran respons JSON cukup besar untuk permintaan durasi maksimum dengan fidelitas tinggi.
  • Rendering: Merender poligon yang sangat mendetail akan memengaruhi performa klien. Untuk mengurangi jumlah verteks dan ukuran payload, pilih polygonFidelity: MEDIUM atau LOW, atau sederhanakan geometri pada klien sebelum merender menggunakan algoritma penyederhanaan garis seperti Douglas-Peucker.

Latensi dan waktu tunggu klien

Latensi respons meningkat seiring dengan ukuran jaringan jalan yang dilalui: durasi singkat serta mode WALK dan BICYCLE adalah yang tercepat, sedangkan permintaan DRIVE dan TWO_WHEELER yang panjang (terutama dengan TRAFFIC_AWARE) memerlukan waktu paling lama.

  • Waktu tunggu klien yang direkomendasikan: Konfigurasikan batas waktu klien HTTP atau gRPC ke setidaknya 30 detik agar permintaan yang panjang tidak dibatalkan lebih awal oleh waktu tunggu klien yang singkat.

Penanganan error

Terapkan logika percobaan ulang dengan backoff eksponensial dan jitter untuk respons batas kapasitas 429 RESOURCE_EXHAUSTED dan error server 5xx. Jangan mencoba ulang error klien 400, 403, atau 404 tanpa mengubah permintaan Anda:

  • INVALID_ARGUMENT (400): Pastikan travelDuration berada di antara 1s dan 3600s (DRIVE/TWO_WHEELER) atau 7200s (WALK/BICYCLE), location tidak dihilangkan dan bukan (0, 0) (atau place adalah ID tempat yang valid), dan TRAFFIC_AWARE hanya digunakan dengan DRIVE atau TWO_WHEELER. latitude atau longitude yang dihilangkan akan diperlakukan sebagai 0.0, sehingga menghilangkan salah satunya biasanya tidak menyebabkan error 400 (kecuali jika nilai lainnya juga 0.0). Periksa kembali kedua nilai jika isokron muncul di tempat yang salah.
  • PERMISSION_DENIED (403): Pastikan kunci API atau token OAuth Anda disertakan dan Isochrones API serta penagihan diaktifkan di project Google Cloud Anda.
  • NOT_FOUND (404): place tidak dapat di-resolve ke lokasi, atau titik awal tidak dapat diposisikan ke jalan terdekat yang dapat digunakan oleh mode perjalanan (dalam jarak sekitar 200 meter, atau kurang untuk WALK dan BICYCLE).
  • RESOURCE_EXHAUSTED (429): Project Anda melebihi kuota permintaan per menit (default 300 QPM). Coba lagi dengan backoff eksponensial.