MapBox: Alternative of Google Maps API

Mapbox is the location data platform for mobile and web applications

Yudi Setiawan
Nusanet Developers
7 min readFeb 24, 2019

--

Pengenalan

“Apa itu Mapbox?” Mapbox merupakan salah satu Maps API Services yang memiliki fitur hampir sama seperti Google Maps API. Untuk perbandingan antara Google Maps API dengan Mapbox API bisa kita lihat di situs https://stackshare.io/stackups/google-maps-vs-mapbox. Saya pribadi sendiri lebih memilih ke Mapbox karena, dari segi pricing-nya menurut saya cukup murah dibandingkan dengan Google Maps API selain itu, untuk limitnya yang gratis di mobile saya rasa lebih baik di Mapbox dibandingkan di Google Maps API karena Mapbox menggunakan perhitungan pengguna yang aktif per bulannya. Dan berikut adalah gambaran dari harga di Mapbox.

https://www.mapbox.com/pricing/

Dan berikut untuk harga Google Maps API.

https://cloud.google.com/maps-platform/pricing/sheet/

Catatan: Kedua harga dari Mapbox dan Google Maps API tersebut bisa berubah sewaktu-waktu ya.

Bagaimana Cara Menggunakannya

Untuk contoh penggunaannya kali ini saya akan membuat sebuah aplikasi di Android yang mana fiturnya seperti berikut.

  • Menampilkan peta
  • Mengubah gaya peta
  • Menambahkan marker
  • Menghapus marker
  • Mengetahui posisi perangkat saat ini
  • Membuat navigasi perjalanan

Registrasi

Sebelum kita bisa mulai menggunakan Mapbox kita diharuskan memiliki access token dimana, access token ini bisa kita dapatkan dengan cara kita daftar terlebih dahulu di situsnya https://www.mapbox.com/. Untuk proses registrasinya tidak akan saya jelaskan ya 😉. Jika kita telah selesai registrasi maka, di halaman dasbornya kita akan melihat nilai access token milik kita.

Halaman dasbor setelah registrasi

Contoh Dasar

Silakan buat projek di Android Studio lalu, tambahkan dependency berikut.

Kemudian, masukkan file access token yang kita miliki tadi ke file strings.xml seperti berikut.

Selanjutnya, buka file main_activity.xml dan ubah menjadi seperti berikut.

Pada kode xml diatas, kita ada meng-set property cameraZoom dengan nilai 12 lalu, posisi kameranya kita masih statik-kan. Sekarang buka file MainActivity.kt dan isi dengan kode berikut.

Dari kode MainActivity.kt kita lihat bahwa kita pertama-tama ada melakukan runtime permission. Jika diizinkan permisinya maka, kita lakukan sync terhadap map_view dan mengubah gaya petanya menjadi Style.MAPBOX_STREETS . Dan jangan lupa tambahkan juga permission di file AndroidManifest.xml seperti berikut.

Sekarang coba jalankan programnya.

Mengubah Gaya Peta

Sekarang coba kita tambahkan fitur untuk mengubah gaya petanya. Di dokumentasinya disebutkan ada beberapa gaya peta yang didukung oleh Mapbox yaitu sebagai berikut.

  • Mapbox Street
  • Outdoor
  • Light and Dark
  • Satellite
  • Satellite Street
  • Traffic Day and Night

Sekarang mari kita buat fitur tersebut di projek kita yang sebelumnya. Pertama-tama kita buat terlebih dahulu fitur tersebut didalam menu options dengan cara tambahkan kode berikut didalam file MainActivity.kt.

Lalu kita buat file menu_main.xml di dalam direktori res-menu. Dan isi dengan kode berikut.

Lalu kembali lagi ke file MainActivity.kt dan tambahkan kode berikut.

Sekarang coba jalankan lagi programnya.

Menambahkan Marker

Sekarang coba kita tambahkan fitur untuk menambahkan marker pada peta-nya dengan cara kita tap pada lokasinya dan nanti akan muncul marker-nya. Silakan kita buka file MainActivity.kt dan tambahkan kode berikut didalam method onMapReady seperti berikut.

Sekarang coba jalankan lagi programnya.

Menghapus Marker

Sekarang coba kita buat fitur untuk menghapus marker yang ada dengan cara tap marker yang ada maka marker tersebut akan terhapus dari peta. Sekarang buka file MainActivity.kt dan tambahkan kode berikut didalam method onMapReady.

Sekarang coba kita jalankan lagi programnya.

Mengetahui Posisi Perangkat Saat Ini

Untuk menambahkan posisi perangkat saat ini kita bisa membuat method baru bernama showingDeviceLocation dan berikut kodenya.

Lalu, kita panggil method tersebut didalam method onMapReady dan kita masukkan pemanggilannya didalam callback dari setStyle seperti berikut

Lalu kita hapus camera position statik yang kita set tadi di file activity_main.xml seperti berikut.

Sekarang kita jalankan lagi programnya.

Membuat Navigasi Perjalanan

Sekarang kita akan membuat fitur untuk bisa menampilkan rute dan navigasi perjalanannya. Caranya kita tambahkan terlebih dahulu dependency berikut pada file build.gradle(app)

Lalu pada build.gradle(Project) kita tambahkan mavenCentral dan maven url seperti berikut.

Sekarang kita buka file activity_main.xml dan tambahkan Button.

Sekarang kita buka file MainActivity.kt dan kita ubah didalam method onMapReady didalam callback addOnMapClickListener seperti berikut.

Pada kode diatas, logikanya adalah ketika kita sudah menambahkan marker sebanyak 2 maka, app kita akan melakukan pencarian rute antara marker 1 dan marker 2 dan button_start_navigation akan muncul. Lalu, kita beri onClickListener pada button_start_navigation untuk menjalankan navigasi perjalanannya.

Perlu diperhatikan pada kode diatas kita ada lihat shouldSimulateRoute yang mana atribut ini berfungsi jika kita mau melakukan simulasi navigasi perjalanannya maka kita set ke true namun, jika tidak maka kita set ke false. Sekarang coba jalankan programnya.

Catatan: Jika terdapat error seperti berikut ketika menjalankannya.

Maka, solusinya coba kita tambahkan compileOptions-nya ke Java Versi 1.8 di file build.gradle.

Kesimpulan

Jadi, kesimpulannya adalah penggunaan Mapbox sebagai alternatif dari Google Maps API saya rasa bisa dipertimbangkan dengan contoh-contoh yang sudah saya berikan pada tulisan ini.

--

--