Contoh LocationPicker Android Tanpa GMap API Sampai Bisa Menampilkan Alamat Penuh

LATAR BELAKANG

  LocationPicker dalam Android adalah sebuah fitur yang memberikan layanan untuk mendapatkan lokasi dari pengguna melalui mark yang diberikan pengguna pada halaman google maps yang ditampilkan. Saat ini fitur ini menjadi kebutuhan pada berbagai software. Namun saat ini karena berbayar terkadang menjadi hambatan untuk menghadirkan fitur ini.

PEMBAHASAN

  Tapi bukan orang Indonesia kalau tidak bisa mengakali. Programmer dari Indonesia dengan akun github Ibnux membuat library android yang menyediakan fitur LocationPicker bahkan sekarang ada juga fitur mengambil jarak tempuh yang mana bisa dimanfaatkan untuk pengembangan aplikasi bertema ojek online. Namun fitur original LocationPicker ini hanya mengambil koordinat saja jadi untuk mendapatkan alamat lengkap perlu beberapa langkah tambahan lagi. Pada artikel ini penulis membahas tutorial implementasi LocationPicker Ibnux ditambah cara agar bisa menampilkan alamat lengkap.

Github :
Location-Picker

PERSIAPAN

  1. atur - build.gradle - root
    Atur build.gradle yang ada pada folder root projek sesuai panduan pada github LocationPicker, contoh hasilnya seperti dibawah ini.
    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
  2. atur - build.gradle - app
    Atur build.gradle yang ada pada folder app projek sesuai panduan pada github LocationPicker yaitu dengan menambahkan dependencies :
    implementation 'com.github.ibnux:Location-Picker:1.9'
  3. Flow
    Flow Mendapatkan Alamat Dari LocationPicker kurang lebih flow dari tutorial pada artikel ini adalah seperti dibawah ini :

SOURCE CODE

  1. Memanggil LocationPicker
    Cara memanggilnya sebetulnya sudah ada pada github LocationPicker namun ternyata class yang ada pada dokumentasi berbeda dengan class yang ada pada library update terakhir yaitu MapsPickerActivity menjadi LocationPickerActivity. Contoh penerapannya dibawah ini, LocationPicker dipanggil melalui trigger saat Button diklik.
    @Override
    public void onClick(View view) {
         if(view == binding.btnCariLokasi){
             Intent locationPickerIntent = new Intent(appContext, LocationPickerActivity.class);
             appActivity.startActivityForResult(locationPickerIntent, 4268);
         }
     }
  2. Menerima Result LocationPicker
    Cara menerima result seperti umumnya bisa dilihat contohnya seperti dibawah ini :
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
         if(resultCode==RESULT_OK) {
              if (requestCode == 4268){
                    setInformasi(data);
              }
         }
    }
  3. Mengambil Alamat Lengkap Dengan Android Geocoder
    Cara mengambil alamat lengkap berbekal dari Latitude dan Longitude dari LocationPicker adalah menggunakan fungsi dari class Geocoder yang sudah bawaan SDK Android sehingga tidak perlu setting - setting khusus untuk bisa menggunakannya. Contoh penggunaanya seperti dibawah ini :
    public void setInformasi(Intent data){
        String lat = data.getStringExtra("lat");
        String lon = data.getStringExtra("lon");
    
        double latitude = Double.parseDouble(lat);
        double longitude = Double.parseDouble(lon);
    
        Geocoder geocoder = new Geocoder(appContext, Locale.getDefault());
        try {
            List<Address> addressList = geocoder.getFromLocation(latitude, longitude, 1);
            if (addressList != null && addressList.size() > 0) {
                Address address = addressList.get(0);
                bindView(address);
            }
        } catch (IOException e) {
            Log.e("Location Address Loader", "Unable connect to Geocoder", e);
        }
    }
  4. Menampilkan hasil ke tampilan
    Pada bagian ini penulis menggunakan fitur viewBinding dari Android, contohnya seperti dibawah ini. Artikel penggunaan viewBinding ada disini.
    private void bindView(Address address){
        binding.etAlamat.setText(address.getAddressLine(0));
        binding.etJalan.setText(address.getThoroughfare());
        binding.etDesa.setText(address.getSubLocality());
        binding.etKecamatan.setText(address.getLocality());
        binding.etKabupaten.setText(address.getSubAdminArea());
        binding.etProvinsi.setText(address.getAdminArea());
        binding.etNegara.setText(address.getCountryName());
    }

KESIMPULAN :

   Cara mengambil alamat penuh ini menurut penulis, Kode Pos dan Nama Jalan akan lebih baik menggunakan form yang diisi manual oleh pengguna karena ternyata berdasarkan ujicoba penulis Kode Pos ini sering kali salah dan Nama Jalan akan menjadi Unnamed Road seperti pada screenshoot diatas kalau tidak mempunyai nama.

   Jika mengalami masalah dan ada pertanyaan silakan tanyakan pada penulis melalui sosial media penulis melalui widget pada header situs ini yang.


Link Github Projek Artikel ini :
Saya seorang programmer dengan fokus developer Web dan Android.