Membuat Aplikasi Pencarian Tempat Pelayanan Kesehatan dengan Formula Haversine |
Aplikasi Pencarian Tempat Pelayanan Kesehatan ini dibuat menggunakan Google Maps API, Google Place API dan Formula Haversine untuk menghitung jarak lokasi kita dengan lokasi tujuan. Bahasa yang digunakan untuk membuat aplikasi ini sepenuhnya pakai Kotlin. Untuk lokasi yang akan ditampilkan di aplikasi ini adalah Apotek/Klinik, Rumah Sakit, Praktik Dokter dan juga Toko Obat.
Tapi sebelum membuat aplikasi ini, ada baiknya kalian buat terlebih dahulu buat API KEY untuk Maps di Google Cloud Platform. Login dengan akun Google kalian lalu buka menu Console, pilih API & Layanan. Setelah itu kalian pilih menu Aktifkan API dan Layanan. Kemudian aktifkan API KEY Maps, Place dan Geolocation.
Buat kalian yang ingin langsung mencobanya, silahkan unduh melalui Github saya SOURCE CODE DISINI. Tetapi jika kalian ingin tahu cara mengaplikasikannya, silahkan lanjut baca artikel ini sampai selesai.
Jangan lupa subscribe Channel Youtube saya juga ya Azhar Rivaldi, karena disana ada banyak tutorial-tutorial untuk membuat aplikasi lainnya. Oke langsung saja tanpa basa-basi lagi kita langsung ke langkah pertama :
1. Seperti biasa, buat project baru di Android Studio dengan cara klik File ⇒ Project Baru. Ketika diminta untuk memilih Default Activity, pilih Empty Activity dan klik next. Untuk minSDK, disini saya set API 21 ya. Ingat, jangan langsung Run atau Copy Paste Source Code dari saya, pasti akan terjadi error jika beda versi Gradle dan beda versi Android Studionya. Untuk tutorial ini, saya buat dengan bahasa Kotlin ya.
4. Buat Class Main sebagai Class utama untuk menampilkan pilihan kategori tempat pelayanan. Buat activity_main.xml dan MainActivity.kt.
Source : activity_main.xml, dan MainActivity.kt
Source : activity_main.xml, dan MainActivity.kt
5. Buat Class untuk menampilkan lokasi berdasarkan kategori yang dipilih. Buat activity_location.xml, ClinicActivity.kt, DoctorActivity.kt, DrugStoreActivity.kt, dan HospitalActivity.kt.
6. Buat Class Detail Lokasi sebagai Class untuk menampilkan nama lokasi, alamat dan juga maps dengan petunjuknya. Buat activity_detail_location.xml dan DetailLocationActivity.kt.
Source : activity_detail_location.xml, dan DetailLocationActivity.kt
Source : activity_detail_location.xml, dan DetailLocationActivity.kt
7. Buat Class Adapter. Buat list_item_main.xml dan MainAdapter.kt.
Source : list_item_main.xml, dan MainAdapter.kt
Source : list_item_main.xml, dan MainAdapter.kt
8. Buat Class Model. Buat ModelDetail.kt, ModelGeometry.kt, ModelLocation.kt dan ModelResults.kt.
9. Buat Class Model Response. Buat ModelResultDetail.kt dan ModelResultNearby.kt.
Source : ModelResultDetail.kt dan ModelResultNearby.kt
10. Buat Class Networking untuk API. Buat ApiClient.kt dan ApiInterface.kt.
Source : ApiClient.kt dan ApiInterface.kt
11. Buat Class Utils untuk Formula Haversine. Buat HitungJarak.kt.
Source : HitungJarak.kt
Source : HitungJarak.kt
12. Buat Class ViewModel karena disini saya menggunakan pattern MVVM. Buat ListResultViewModel.kt.
Source : ListResultViewModel.kt
Source : ListResultViewModel.kt
Support Blog Rivaldi 48 agar terus bisa membagikan artikel-artikel yang bermanfaat dengan cara klik link Sociabuzz dibawah ini :https://sociabuzz.com/azharrvldi_/donate (bisa pakai GoPay, OVO, DANA, Bank Transfer)
Demikian informasi yang saya bagikan untuk kalian. Jangan lupa bagikan artikel ini ke teman-teman kalian agar ikut membaca Tutorial Membuat Aplikasi Pencarian Tempat Pelayanan Kesehatan dengan Formula Haversine ini. Subscribe juga blog Rivaldi 48 ini agar kalian mendapatkan notifikasi saat Admin update artikel terbaru. Semoga kalian lebih nyaman dan mudah dalam mengakses Blog Rivaldi 48 dimanapun kalian berada. Terima Kasih. Follow Instagram Admin @azhardvls_
terima kasih gan ilmunya, semoga ilmu yang di bagikan menjadi amal dan pahala
ReplyDeletesama sama gan
Deleteerror yang lain sudah saya solve satu satu gan, kalau ini error kenapa ya udah searching" kurang ngerti karna baru megang android
ReplyDeleteCause 1: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.IResultReceiver found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.IResultReceiver$Stub$Proxy found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.ResultReceiver found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.ResultReceiver$1 found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.ResultReceiver$MyResultReceiver found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.ResultReceiver$MyRunnable found in modules core-1.1.0-runtime.jar (androidx.core:core:1.1.0) and support-compat-27.1.1-runtime.jar (com.android.support:support-compat:27.1.1)
akhirnya running gan, ternyata androidx nya belum saya jadiin "true" di gradle.properties nya :D
Deleteakhirnya ada titik terang dalam penyelesaian tugas akhir :D
makasi gan atas ilmunya, semoga berkah dan jadi pahala buat agan..
semangat terus gan dalam membuat aplikasi sederhana seperti ini, terus berkarya gan..
nice.. agan udah bisa baca error dari program, itu jadi nilai plus
Deleteoh iya gan, kalau objek nya mau saya rubah misalnya jadi tempat wisata itu saya harus rombak dimana aja ya gan
Deletedi link apinya
Deletesudah gan work mulai membaca satu satu :D
Deletemau nanya lagi gan, itukan gambar apotek dan praktek dokter kan udah saya ganti file nya yah yang di app/build/generated/res/pngs/debug/ sudah saya desain juga gambarnya, tapi kok pas saya jalanin masih logo apotek dan logo first aid yah gan?
itu gimana ya gan ?
maaf banyak nanya karna pemula :D
semua logo ada di folder drawable
Deleteyang bentuk filenya xml gan ?
Deleteatau harus tambah image asset ?
Deletesaya searching google disuruh buat image asset, tapi kok ic_lanchernya juga otomatis disuruh buat, sedangkan ic_launcher nya sudah ada..
atau saya cukup buat file xml saja ?
terus gambar yang mau saya masukkan itu taro difolder mana yah gan ?
difolder drawable isinya file xml semua..
oke mas sudah bisa :D
Deleteadd new vector asset saja ternyata :D
ok sip
Deletemau tanya gan untuk gradle.properties disebelah mana ya? saya cari kok gk ada
Deleteusahakan new project, jangan asal copas
Deletecara ganti topiknya gimana kak jadi ndak dr praktek atau apotik melainkan wisata atau tempat makan gitu
ReplyDeletebiasakan baca source codenya ya, disana ada api googlenya
Deletemas, sebelumnya aplikasi lancar pake api key gratisan yang cuma 30 hari itu, nah setelah masa limit abis saya coba daftar api key baru, tapi pas saya masukin api key terbaru kok setiap mencari lokasi selalu "data kosong!" yah mas ?
ReplyDeleteitu kenapa yah mas :(
ya kamun udah nyalain belum sdk mapsnya di cloud google? aktifin placenya sudah?
DeleteSudah mas, places api dan sdk map nya sudah saya aktifin..
DeleteBedanya console.developer.google dan console.cloud.google apa mas? Kan sama sama bisa dapet api dari situ..
Sebelumnya saya dari console.developer.google
yg saya pake console cloud
Deleteassalamualaikum gan, saya sudah coba tetapi kok "cannot resolve symbol" yee gan?
ReplyDeletekenapa itu yaa? mohon bimbingan nya dong gan, terimakasih
coba ditonton juga videonya
DeletePas klik apotek ko keluar ya aplikasinya gimna
DeleteType mismatch: inferred type is (ArrayList) -> Unit but (ArrayList!) -> Unit was expected
ReplyDeleteKalau seperti kenapa ya? modelResults selalu gak matching
tonton videonya gan
Delete