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 sama-sama memerlukan kehati-hatian seperti ID pengguna dan sandi. Tinjau Praktik Terbaik Kunci 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 pilihan untuk mengakses Google Maps API. Meski penggunaan client ID tetap didukung, kunci API mendukung kontrol keamanan yang lebih terperinci 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 terkait di Menggunakan Kunci API.)

Performa

Menggunakan backoff eksponensial untuk menangani error

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

Khususnya, Anda dapat menyesuaikan kecepatan kueri. Pada kode Anda, tambahkan waktu tunggu selama S detik di antara kueri. 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. Ini berarti menunggu pengguna akhir melakukan tindakan (seperti on-click) untuk memicu permintaan API, lalu menggunakan hasilnya 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 yang tidak terkait proses penggambaran yang menyedot performa di 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 keterlambatan 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 perenderan 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 untuk dikelompokkan bersama 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 pengeluaran, lakukan hal berikut ini:

  • Tetapkan notifikasi anggaran untuk mengetahui saat pengeluaran 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 Google Maps Platform API secara rutin dalam pengujian. Dengan membuat project berbeda untuk pengujian - dengan kuota dan kunci API sendiri - Anda dapat menguji secara menyeluruh sambil melindungi diri dari pengeluaran berlebihan yang tidak 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 memanipulasi peta untuk menampilkan set data yang berbeda, bergantung pada interaksi dan kebutuhan pelanggan.

Menggunakan gambar statis

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

Thumbnails - peta dan foto yang sangat kecil - adalah penggunaan lain yang baik untuk Static Maps dan Static Street View. 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, atau peta dinamis, ke peta secara gratis. 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 ditagih (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 ditagih dengan tarif yang lebih tinggi.

Menggunakan pengoptimalan Directions API untuk mengoptimalkan pemilihan rute

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

Argumen pengoptimalan mengurutkan titik jalan untuk memastikan pemilihan rute yang optimal, yang berarti 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 ditagih dengan 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-fitur Maps Roads API, yaitu Route Traveled dan Nearest Road, disertakan dalam tingkat lanjutan dan ditagih dengan tarif yang lebih tinggi. Gunakan fitur ini jika data GPS tidak akurat dan 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 sampai 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

Menggunakan opsi Autocomplete yang sesuai dengan kasus penggunaan Anda

Identifikasi opsi Autocomplete yang paling sesuai dengan kasus penggunaan Anda, karena keduanya memiliki biaya yang sama. Perbedaan di antara kedua opsi tersebut adalah cara pengguna akhir aplikasi Anda dapat memanfaatkan API.

  • Autocomplete - Per Request: cocok untuk kasus penggunaan yang cukup dengan satu entri, seperti formulir alamat surat yang diisi pengguna.
  • Autocomplete - Per Session: Paling tepat digunakan jika memerlukan beberapa entri, seperti penelusuran untuk hotel atau restoran.

Autocomplete - Per Session memungkinkan hasil yang tidak terbatas, tetapi memerlukan penerapan token untuk memastikan sesi valid. Jika terjadi sesi yang tidak valid, biaya Autocomplete - Per Request diterapkan per ketikan, sehingga dapat menyebabkan penagihan yang lebih tinggi. Untuk informasi selengkapnya tentang fitur ini, lihat Place Autocomplete.

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

Anda dapat menyesuaikan permintaan Place Detail 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 Detail 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.