Panduan Pengoptimalan

Panduan ini menjelaskan beberapa strategi untuk mengoptimalkan penggunaan Google Maps API dalam hal keamanan, performa, dan pemakaian.

Keamanan

Meninjau praktik terbaik keamanan

Kunci API adalah kredensial berorientasi project yang perlu ditangani secara hati-hati seperti halnya ID pengguna dan sandi. Tinjau Praktik Terbaik Keamanan API guna mengamankan kunci Anda dari penggunaan yang tidak diinginkan, yang dapat menyebabkan penggunaan kuota yang tidak semestinya dan tagihan yang tidak terduga pada akun Anda.

Menggunakan kunci API untuk mengakses Maps API

Kunci API adalah metode autentikasi yang diutamakan untuk mengakses Google Maps API. Meski penggunaan client ID tetap didukung, kunci API mendukung kontrol keamanan yang lebih lengkap dan dapat disesuaikan dengan alamat web, alamat IP, dan SDK seluler (Android dan iOS) tertentu. Untuk informasi tentang cara membuat dan mengamankan kunci API, buka halaman "Menggunakan Kunci API" untuk setiap API atau SDK. (Misalnya, untuk Maps JavaScript API, buka halaman terkaitnya dalam artikel Menggunakan Kunci API.)

Performa

Menggunakan backoff eksponensial untuk menangani error

Jika aplikasi Anda mengalami error karena terlalu sering mencoba memanggil API dalam waktu singkat, seperti error QPS, pertimbangkan untuk menggunakan backoff eksponensial agar permintaan dapat diproses.

Backoff eksponensial sangat berguna untuk berbagai jenis error 500. Untuk mengetahui informasi selengkapnya, lihat Menangani kode status pengembalian HTTP.

Khususnya, sesuaikan kecepatan kueri Anda. Pada kode Anda, tambahkan waktu tunggu antarkueri selama S detik. Jika kueri masih menampilkan error QPS, gandakan waktu tunggu, lalu kirim kueri lain. Terus sesuaikan waktu tunggu hingga kueri tidak menampilkan error.

Mengirim permintaan interaksi pengguna sesuai permintaan

Permintaan ke API yang menyertakan interaksi pengguna hanya boleh dikirim sesuai permintaan. Artinya, pengguna akhir harus melakukan tindakan (seperti on-click) untuk memicu permintaan API terlebih dahulu, lalu hasilnya digunakan untuk memuat peta, menetapkan tujuan, atau menampilkan informasi yang sesuai. Menggunakan metode sesuai permintaan akan menghindari permintaan yang tidak perlu ke API, sehingga mengurangi pemakaian API.

Menghindari menampilkan konten overlay saat peta digeser

Hindari penggunaan Draw() untuk menampilkan konten overlay kustom pada peta di saat yang sama ketika pengguna mungkin menggeser peta. Karena peta digambar ulang setiap kali pengguna menggerakkan peta, penempatan konten overlay di peta pada waktu yang sama dapat menyebabkan keterlambatan atau ketersendatan visual. Tambahkan atau hapus konten overlay dari peta hanya saat pengguna berhenti menggeser atau memperbesar/memperkecil peta.

Menghindari pengoperasian intensif dalam metode Draw

Sebagai aturan umum, sebaiknya hindari pengoperasian di luar proses penggambaran yang memerlukan performa tinggi dalam metode Draw(). Misalnya, hindari hal berikut di kode metode Draw() Anda:

  • Kueri yang menampilkan banyak konten.
  • Banyak perubahan pada data yang ditampilkan.
  • Memanipulasi banyak elemen Document Object Model (DOM).

Pengoperasian ini dapat memperlambat performa dan menyebabkan keterlambatan atau ketersendatan visual saat peta dirender.

Menggunakan gambar raster untuk penanda

Gunakan gambar raster, seperti gambar dalam format .PNG atau .JPG, saat menambahkan penanda untuk mengidentifikasi lokasi pada peta. Hindari penggunaan gambar Scalable Vector Graphics (SVG) karena merender gambar SVG dapat menyebabkan jeda waktu saat peta digambar ulang.

Mengoptimalkan penanda

Pengoptimalan akan meningkatkan performa dengan merender banyak penanda sebagai elemen statis tunggal. Hal ini berguna jika ada banyak penanda yang diperlukan. Secara default, Maps JavaScript API akan menentukan apakah penanda akan dioptimalkan. Jika ada banyak penanda, Maps JavaScript API akan mencoba merender penanda dengan pengoptimalan. Tidak semua Penanda dapat dioptimalkan; dalam beberapa situasi, Maps JavaScript API mungkin perlu merender Penanda tanpa pengoptimalan. Nonaktifkan rendering yang dioptimalkan untuk GIF atau PNG animasi, atau jika setiap penanda harus dirender sebagai elemen DOM terpisah.

Membuat cluster untuk mengelola tampilan penanda

Untuk membantu mengelola tampilan penanda guna mengidentifikasi lokasi di peta, buat cluster penanda menggunakan library Pengelompok Penanda. Library Pengelompok Penanda menyertakan opsi untuk:

  • Ukuran petak, untuk menentukan jumlah penanda yang perlu dikumpulkan dalam sebuah cluster.
  • Zoom maksimum, untuk menentukan tingkat maksimum zoom guna menampilkan cluster.
  • Jalur gambar, yang digunakan oleh gambar grafis sebagai ikon penanda.

Pemakaian

Untuk merencanakan anggaran dan mengontrol biaya, lakukan tindakan berikut ini:

  • Tetapkan pemberitahuan anggaran untuk melacak biaya yang mendekati jumlah tertentu. Menetapkan anggaran tidak membatasi penggunaan API - hal itu hanya memberi tahu Anda saat pengeluaran mendekati jumlah yang Anda tentukan.
  • Batasi penggunaan API harian untuk mengelola biaya API yang dapat ditagih. Dengan menetapkan batas pada permintaan per hari, Anda dapat membatasi pengeluaran. Gunakan persamaan sederhana untuk menentukan batas harian, bergantung pada jumlah yang ingin Anda belanjakan: (biaya bulanan/harga satuan )/30 = batas permintaan per hari (untuk satu API). Penerapan tertentu mungkin menggunakan beberapa API yang dapat ditagih, jadi sesuaikan persamaan menurut kebutuhan. Kredit Google Maps API senilai $200 tersedia setiap bulan, jadi masukkan itu ke dalam perhitungan Anda.
  • Gunakan beberapa project untuk mengisolasi, memprioritaskan, dan melacak penggunaan Anda. Misalnya, anggap bahwa Anda menggunakan API Google Maps Platform secara rutin dalam pengujian. Dengan membuat project berbeda untuk pengujian - dengan kuota dan kunci API sendiri - Anda dapat menguji secara menyeluruh sambil mencegah pengeluaran berlebihan yang tak terduga.

Mengelola pemakaian di Maps

Menggunakan satu peta per halaman adalah cara yang baik untuk mengoptimalkan tampilan peta, karena pengguna biasanya hanya berinteraksi dengan satu peta dalam satu waktu. Aplikasi Anda dapat merekayasa peta untuk menampilkan set data yang berbeda, bergantung pada interaksi dan kebutuhan pelanggan.

Menggunakan gambar statis

Biaya untuk permintaan yang menggunakan gambar dinamis (Dynamic Maps dan Dynamic Street View) lebih besar dibandingkan dengan Static Maps dan Static Street View. Jika Anda tidak mengharapkan pengguna berinteraksi dengan Maps atau Street View (memperbesar/memperkecil atau menggeser), gunakan versi statis API ini.

Thumbnail - peta dan foto yang sangat kecil - adalah penggunaan Static Maps dan Static Street View yang baik lainnya. Item ini ditagih dengan tarif yang lebih rendah dan setelah interaksi pengguna terjadi (saat diklik), serta dapat membawa pengguna ke versi dinamis untuk pengalaman Google Maps yang lengkap.

Menggunakan Maps Embed API

Anda dapat menggunakan Maps Embed API untuk menambahkan satu penanda ke peta, atau menambahkan peta dinamis, tanpa biaya. Gunakan Maps Embed API untuk aplikasi yang memerlukan satu penanda dan tidak memerlukan penyesuaian peta. Permintaan Maps Embed API yang menggunakan mode Rute, mode Tampilan, atau mode Penelusuran akan dikenai tarif (lihat tabel harga untuk detailnya).

Menggunakan SDK peta seluler untuk aplikasi seluler

Untuk aplikasi seluler, gunakan Maps SDK for Android atau Maps SDK for iOS saat menampilkan peta. Gunakan Maps Static API atau Maps JavaScript API jika persyaratan tidak mengizinkan penggunaan SDK seluler.

Mengelola pemakaian di Rute

Membatasi titik jalan Directions API

Jika memungkinkan, batasi entri pengguna dalam kueri hingga maksimum 10 titik jalan. Permintaan yang berisi lebih dari 10 titik jalan akan dikenai tarif yang lebih tinggi.

Menggunakan pengoptimalan Directions API untuk mengoptimalkan pemilihan rute

Permintaan yang menggunakan argumen pengoptimalan titik jalan akan dikenai tarif yang lebih tinggi. Untuk informasi selengkapnya, lihat Mengoptimalkan Titik Jalan.

Argumen pengoptimalan mengurutkan titik jalan untuk memastikan pemilihan rute yang optimal, yang artinya perjalanan dari A ke E lebih baik jika dioptimalkan (A-B-C-D-E) dibandingkan urutan acak rute yang tidak dioptimalkan (seperti A-D-B-C-E).

Menggunakan model lalu lintas real-time di Directions API dan Distance Matrix API

Permintaan Directions API dan Distance Matrix API yang menyertakan model lalu lintas real-time akan dikenai tarif yang lebih tinggi. Model lalu lintas real-time diaktifkan dengan menetapkan waktu keberangkatan ke now.

Jika model lalu lintas dihilangkan dari permintaan, hasilnya hanya didasarkan pada faktor fisik: jalan, jarak, dan batas kecepatan.

Menggunakan Route Traveled & Nearest Road saat data GPS tidak akurat

Fitur Maps Roads API, yaitu Route Traveled dan Nearest Road, disertakan dalam tingkat lanjutan dan dikenai tarif yang lebih tinggi. Gunakan fitur ini jika data GPS tidak akurat. Roads API dapat membantu menentukan jalan yang benar. Speed Limits, fitur lain dari Roads API, hanya tersedia untuk pelanggan Pelacakan Aset.

Mengambil sampel lokasi batas kecepatan pada interval 5 hingga 15 menit

Untuk meminimalkan volume panggilan ke layanan Speed Limits Maps Roads API, ambil sampel lokasi aset Anda pada interval 5 hingga 15 menit. Nilai tepatnya bergantung pada kecepatan gerak aset. Jika aset diam, satu sampel lokasi sudah cukup. Tidak perlu melakukan beberapa panggilan.

Untuk meminimalkan keseluruhan latensi, panggil layanan Speed Limits setelah mengumpulkan beberapa data, daripada memanggil API setiap kali lokasi aset seluler diterima.

Mengelola pemakaian di Tempat

Mengoptimalkan penerapan Place Autocomplete

Untuk mengoptimalkan biaya penggunaan Place Autocomplete:

  • gunakan field mask di widget Autocomplete JavaScript, Android, dan iOS untuk hanya menampilkan Kolom Data Place yang Anda perlukan.

  • pilih opsi penagihan yang sesuai untuk kasus penggunaan Anda. Bergantung pada apakah penerapan Anda menggunakan sesi Autocomplete atau tidak, Anda akan dikenai biaya untuk SKU Autocomplete - Per Request atau Autocomplete - Per Session.

Untuk mengetahui panduan dan informasi selengkapnya tentang cara memilih opsi yang tepat bagi kasus penggunaan Anda, lihat Praktik terbaik pengoptimalan biaya Place Autocomplete.

Menampilkan data untuk kolom tertentu dalam permintaan Place Details dan Place Search

Anda dapat menyesuaikan permintaan Place Details dan Place Search untuk menampilkan data untuk kolom tertentu yang digunakan dalam aplikasi Anda. Kolom ini dibagi ke dalam kategori: Basic, Contact, dan Atmosphere. Permintaan yang tidak menentukan kolom mana pun akan menerima data untuk semua kolom.

Penagihan untuk permintaan Place Details didasarkan pada jenis dan jumlah data yang diminta. Permintaan yang tidak menentukan kolom mana pun akan ditagih dengan tarif penuh. Untuk informasi selengkapnya, lihat Place Details dan Place Search.

Mengurangi biaya dengan Geocoding API

Jika aplikasi Anda menangani alamat yang diketik pengguna, alamat tersebut terkadang ambigu (tidak lengkap, salah eja, atau berformat buruk). Perjelas alamat menggunakan Autocomplete, lalu gunakan ID tempat untuk mendapatkan lokasi tempat.

Jika Anda memiliki alamat yang tepat (atau hampir tepat), Anda dapat mengurangi biaya dengan menggunakan Geocoding daripada Autocomplete Untuk detail selengkapnya, lihat Praktik Terbaik Alamat Geocoding.

Cara kerja kuota Google Maps Platform

Semua API kami memiliki batas jumlah panggilan yang dapat dilakukan setiap pelanggan. Kuota ini dikonfigurasi per menit. Setelah Anda mencapai kuota panggilan pada API tertentu dalam satu menit, panggilan lainnya tidak akan diterima hingga menit berikutnya.

Hanya permintaan yang berhasil dan permintaan yang menyebabkan error server yang akan mengurangi kuota. Permintaan yang gagal autentikasi tidak mengurangi kuota.

Beberapa Maps API memiliki pemberlakuan kuota per detik selain pemberlakuan kuota per menit. Pemberlakuan kuota per detik ini tidak akan menjamin penggunaan yang seragam selama satu menit, dan juga tidak akan mencegah Anda mencapai kuota penggunaan untuk menit tersebut. Dengan cara ini, Anda tidak akan menghabiskan semua kuota pada satu atau dua detik pertama dalam setiap menit, dan melindungi Anda dari gangguan layanan jika terjadi lonjakan penggunaan yang tiba-tiba. Untuk menangani perbedaan pemberlakuan kuota ini, rencanakan penggunaan dan persyaratan kuota Anda dengan menghitung rata-rata penggunaan QPM berdasarkan QPS.

API GMP yang memiliki pemberlakuan kuota per detik ini adalah Directions API, Distance Matrix API, Elevation API, Geocoding API, Places API, dan Roads API.

Perkirakan biaya untuk produk GMP API mana pun, berdasarkan total volume permintaan Anda.