Last Updated on 10 years by Mas Herdi
Oke guys, kita sudah memasuki bagian terakhir dari tutorial series tentang cara menambahkan fitur check in pada aplikasi location based services di Android. Postingan terakhir ini akan membahas bagaimana caranya untuk menampilkan semua lokasi check-in kita pada peta. Yaitu dengan cara mengambil semua koordinat lokasi check-in dari database dan menampilkan semuanya pada Android Maps.
Warming Up
Sebelumnya, marilah kita mengingat-ingat apa yang telah dipelajari sebelumnya. Pada tutorial pertama kita belajar tentang cara menambahkan fitur check-in sehingga kita bisa menyimpan lokasi di database. Selanjutnya di tutorial kedua kita belajar tentang cara menampilkan koordinat lokasi check in yang telah kita simpan pada peta, satu persatu. Nah di tutorial terakhir ini kita akan belajar cara menampilkan semua lokasi sekaligus yang telah kita simpan di database pada Android Maps.
Pre-requisites
Seperti biasa, sebelum kita lanjut ke tutorial, saya sarankan kalian membaca tutorial tentang Google Map for Android API v2 di sini.
Coding
Oke, langsung saja kita mulai codingnya. Di database kita sekarang sudah penuh dengan lokasi-lokasi hasil check-in. Sekarang bagaimana caranya supaya kita bisa menampilkan semua lokasi check-in tersebut ke dalam Google Maps? Jika kalian perhatikan, pada layout CheckInActivity.java sudah ada button “Petakan semua lokasi”, namun tombol tersebut belum berfungsi, sekarang kita menambahkan method OnClick pada tombol tersebut :
btShowAll.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(values.size()>0) { startActivity(new Intent(CheckInActivity.this,MapsActivity.class).putExtra("arraylokasi", values)); } } });
Method tersebut sebenarnya cukup sederhana, ketika tombol diklik, maka aplikasi akan memanggil startActivity() dan kita akan langsung menuju ke halaman Maps. Pada saat pindah ke halaman Maps, kita akan mengikutsertakan data extra yang berupa array list berisi lokasi, data array tersebut sebelumnya sudah diambil pada bagian code berikut :
DBDataSource dataSource; //.... dataSource = new DBDataSource(this); dataSource.open(); values = dataSource.getAllLokasi();
Setelah itu, ketika sampai pada MapsActivity.java, ArrayList lokasi yang diikutsertakan melalui intent akan langsung diparsing dan ditampilkan satu persatu pada peta menggunakan kode di bawah ini :
//... else { LatLng init; DBLokasi lokInit; LatLng latLng; values = ((ArrayList<DBLokasi>) this.getIntent().getSerializableExtra("arraylokasi")); lokInit = values.get(0); init = new LatLng(lokInit.getLatD(), lokInit.getLngD()); map.animateCamera(CameraUpdateFactory.newLatLngZoom(init, 16)); for(DBLokasi lok : values) { latLng = new LatLng(lok.getLatD(), lok.getLngD()); map.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN))); } map.setOnMarkerClickListener(new OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { final Dialog dialog = new Dialog(MapsActivity.this); dialog.setTitle("Checkin Data :"); dialog.setContentView(R.layout.fragment_dialog_datashow); TextView tvNama = (TextView) dialog.findViewById(R.id.tv_nama); TextView tvKoordinat = (TextView) dialog.findViewById(R.id.tv_koordinat); Button btOK = (Button) dialog.findViewById(R.id.bt_checkin_ok); tvNama.setText(String.format(getResources().getString(R.string.checkin_label_nama), marker.getTitle())); tvKoordinat.setText(marker.getPosition().latitude+","+marker.getPosition().longitude); btOK.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.cancel(); } }); dialog.show(); return false; } }); } //..
Basically, that’s all! Sederhana sekali bukan?
Untuk source code MapsActivity.java kalian bisa lihat di bawah ini :
Sedangkan untuk full source code CheckInActivity.java, adalah sebagai berikut :
Demo
Pada saat aplikasi TWOH’s Maps dibuka akan muncul tampilan seperti berikut :
Langsung masuk ke halaman check-in, ada 6 lokasi di sana
Kemudian saat klik “Petakan semua lokasi” akan muncul point lokasi pada peta
Klik marker, maka akan muncul details dari lokasi tersebut
Source code lengkapnya bisa dilihat di GitHub saya, kalian juga bisa download demo app-nya pada Play Store.
Halo, mas. Keren-keren tutorialnya buat pemula kaya saya.
Ada yg mau ditanyakan. Kalau misalkan kita mau mengambil nama daerah gimana ya?
Pengen coba buat informasi / berita daerah-daerah, bukan kota.
Makasih sebelumnya 😀
Jika ingin mengambil Nama daerah bisa menggunakan GeoCoding 🙂
slmt sore mas, Source code nya byk error mas, apa memang mas blok supaya tidak bisa di edit??
Hmm, maksudnya diblok?
Coba download SC lengkapnya dari sini https://github.com/twoh/TWOH-MapsV2/, seharusnya tidak error
sudah saya download mas,, di style.xml byk error mas, tros di mainactivity juga..
MapsActivity.java error di importnya mas, com.google.android.gms.maps
bisa bantu mas,,
Oh, import librarynya dulu gan.
Ente pakai Eclipse atau Android Studio?
pakai eclipse gan , masih newbie ane..
tolong dibantu ya gan,,
berarti kurang import librarynya gan… library maps nya diimport dulu
Gan itu tulisan import id.web.twoh.twohmaps.R; dan import id.web.twoh.twohmaps.model.DBLokasi; kok error ya.
sourcenya kagak ada?
mohon bantuannya?
Saya sudah coba download SC lengkapnya dari sini https://github.com/twoh/TWOH-MapsV2/, seharusnya tidak error kan?
DBLokasi ada di postingan ini, http://www.twoh.co/2014/09/menambahkan-fitur-check-pada-android-location-based-service-maps-api-v2/
Karena ini postingan series (sambungan), mohon dibaca pre-requisites untuk tahu postingan2 sebelumnya.
Thanks
pusing yah coding codingan.. saya masih belajar nih :”))
Mas kok di method getmap() gag ada ya. .
Di MapsActivity itu erornya tgl itu getmap()nya gag ada pas digradle.. makasi mas sblumnya
sekarang jadi getMapAsync() gan
mas, kalo ngambil koordinatnya dari mysql yg saya simpen di hosting bagaimana ya?
Bisa dengan cara bikin API retrofit yang nanti nge-get data koordinat dari mysql yang disimpan di hosting agan, basic nya bisa dibaca di > https://www.twoh.co/2016/10/16/tutorial-http-get-query-menggunakan-retrofit-2-di-android/
jadi yg diganti hanya DBMapsHelper.java dan DBLokasi.java menjadi api interface dan modelnya ya gan?
Assalamualaikum,. Om Hafizh ,. Saya angga Dari Cawang,. Saya seorang driver Gojek Yg coba liat liat artikel soal aplikasi Android padahal sangat jauh bagi saya untuk ngerti hal ini. Tapi untuk 1 Tujuan supaya bisa menafkahi istri dan 3 anak saya,. Saya berani kan diri untuk minta tolong sama Om Hafizh,. Bisa gak Bantu Bantu saya buat kan 1 aplikasi Yg bisa bikin akun Gojek saya lancar orderan nya,. Gak seperti skrang Yg sehari cuma 5 sampe 10 orderan perharinya,.entah dengan apa saya mampu membayarnya tapi saya janji akan berusaha semaksimal mungkin Yg saya bisa,. Thanks semoga Om Hafizh sehat dan lancar rejekinya selalu,.
Wa’alaikumsalam. Ooo gitu, iya memang sekarang katanya Go-Jek lagi susah dapat order ya pak. Mungkin itu karena semakin banyaknya driver yang online, tapi penumpangnya itu-itu saja. Sekarang kan kompetisi memang semakin ketat pak… Dan mohon maaf untuk itu saya tidak bisa membuat aplikasinya pak, karena memang secara teknis tidak bisa. Untuk orderan dan flow nya semuanya sudah diatur oleh sistem GoJek sehingga orang luar seperti saya tidak bisa ubah2 dan tidak punya akses. Maaf ya pak, Amin thanks untuk doanya. Semoga bapak pun juga sehat dan rejeki lancar selalu tetap semangat