Last Updated on 10 years by Mas Herdi
Interface LocationListener diimplementasikan ke dalam inner class bernama MyLocationListener, pada kelas tersebut terdapat methods yang berfungsi untuk menghandle event apabila terjadi perubahan pada lokasi user atau perubahan pada status provider, dalam kasus ini kita hanya akan menampilkan Toast yang berisikan info. Kemudian apabila kita mengeklik tombol GetLocation, maka method showCurrentLocation() akan dieksekusi. Method itu akan memanggil getLastKnownLocation() dari kelas LocationManager yang akan memberikan Location terakhir yang terdeteksi. Dari object Location tersebut, kita akan dapat mengetahui parameter-parameter seperti latitude, longitude, altitude, speed, dsb.
Kemudian tombol satunya lagi adalah tombol View On Map, yang akan memunculkan lokasi kita pada Android Maps. Ketika tombol tersebut di-klik, informasi lokasi seperti latitude dan longitude, akan dimasukkan ke dalam sebuah Bundle, info itu akan di-pack dan diikutkan sebagai sebuah extra pada Intent, yang nantinya akan diteruskan ke Activity selanjutnya, yaitu Activity MapsActivity.java.
Activity MapsActivity pada dasarnya tidak jauh berbeda dengan yang pernah saya tuliskan di tutorial untuk menampilkan marker koordinat pengguna. Kita hanya perlu menambahkan beberapa baris kode yang berfungsi untuk meng-unpack koordinat yang tadi diikutsertakan pada Bundle dari aktivitas sebelumnya, dan mengaplikasikan koordinat tersebut pada peta, berikut ini kode lengkapnya :
MapsActivity.java
package id.web.twoh.twohmaps; import java.util.ArrayList; import id.web.twoh.twohmaps.R; import id.web.twoh.twohmaps.model.DBLokasi; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.widget.Toast; public class MapsActivity extends FragmentActivity{ private GoogleMap map; private DBLokasi lokasi; private ArrayList<DBLokasi> values; @SuppressWarnings("unchecked") @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.activity_map); SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); map = mapFrag.getMap(); map.setMyLocationEnabled(true); Bundle b = this.getIntent().getExtras(); if(b.containsKey("longitude")){ final LatLng latLng = new LatLng(b.getDouble("latitude"), b.getDouble("longitude")); map.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16)); map.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN))); map.setOnMarkerClickListener(new OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { Toast.makeText(MapsActivity.this, "Lokasi saat ini "+latLng.latitude+","+latLng.longitude,Toast.LENGTH_SHORT).show(); return false; } }); }else if(this.getIntent().getSerializableExtra("lokasi")!=null) { lokasi = (DBLokasi) this.getIntent().getSerializableExtra("lokasi"); if(lokasi!=null) { LatLng latLng = new LatLng(lokasi.getLatD(), lokasi.getLngD()); map.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16)); map.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN))); } map.setOnMarkerClickListener(new OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { // see next post :) return false; } }); }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) { // see next post :) return false; } }); } } }
Kemudian untuk layout xml yang digunakan pada activity MapsActivity tersebut, buatlah sebuah file xml layout bernama activity_map.xml, dan isikan kode berikut :
activity_map.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.SupportMapFragment"/> </LinearLayout>
Yang membedakan dengan membuat layanan berbasis lokasi menggunakan MapsV1 adalah, kita tidak perlu menggunakan kelas MapsOverlay untuk menampilkan marker. Semuanya sudah dihandle pada kelas MapsActivity.java.
Dan ini adalah tampilan aplikasi ketika dijalankan, oh iya jangan lupa bahwa tutorial ini hanya bisa dijalankan di device Android langsung, dan tidak bisa dijalankan di emulator Android. Sehingga pastikan kalian mencobanya di smartphone Android 🙂
Demo
Ketika tombol “Get Location” diklik :
Klik “View On Map” untuk membuat visualisasi dari lokasi dimana kalian berada B-)
Dan inilah yang muncul ketika kalian klik pada Marker :
Oke, seperti kira-kira seperti itu. Jika masih ada yang bingung silahkan bertanya di bagian komentar. Untuk source code-nya bisa diambil di GitHub saya. Semoga membantu ! 🙂
makasih mas atas tutor2nya saya banyak belajar :)..
btw kalau mau membuat aplikasi berbasis LBS ini disertai input informasi dan gambar dari user lalu dihubungkan dengan database bagaimana ya mas?
terimakasih banyak :))))
Bisa saja, itu lebih kompleks karena kamu butuh server dan web application/web service yang berfungsi untuk menampung data gambar dan informasi yang dikirim dari aplikasi androidnya
mohon maaf kak, mau tanya. saya lagi skripsi yang beruhubungan sama perhitungan waktu maps, itu metode yang tepat digunakan apa yak kak ?
mohon arahannya
mas,,,
saya punya projek LBS sudah fix jadi,,,bisa nampilin marker dan bisa
tp kenapa setelah update SDK saat buka maps hanya muncul layar putih,,,marker nga kliatan,,,
apa karena google play service y nga cocok,,,tadinya pake yg versi 9 ngikutin SDKnya
stelah update jadi versi 16,,,
gimana y mas,,,,terimakasih
Yup, ada perubahan di manifest nya untuk menambahkan version code.
Pastikan juga API KEY nya sudah benar.
Baca lebih lanjut : http://www.twoh.co/2013/04/tutorial-menampilkan-maps-menggunakan-android-maps-api-v2-dan-mapfragment/
saya mendapat error MapsActivity cannot be resolved to a type kira2 apa yah ?
errornya disini ( Intent i = new Intent(getActivity(), MapsActivity.class); )
MapsActivity class nya harus di-import dulu mas bro
bro hafizh gimana caranya applikasi ini berjalan terus walaupun restart , dan terus kirim onLocationChanged ?
bikin background service gan, dan kemudian bikin thread untuk periodically send location updates
mas mau tanya… saya sudah buat untuk projectnya, dan kebetulan support semua tidak ada yang eror, tapi ketika saya jalankan di DEVICE HP Android saya kok tidak bisa ada perintgatan “terhenti” langsung keluar begitu saja, kira-kira yang salah dimana ya mas?
terima kasih.
Errornya bagaimana ya?
Coba cek di logcat http://www.twoh.co/2013/02/mengatasi-force-close-pada-aplikasi-android-menggunakan-logcat/
mas mau tanya ??
saya kok ada eror di bagian (lokasi.getLatD()
bagian mana yang harus diperbaiki??
terimakasih
kodenya lokasi.getLat() dan bukan lokasi.getLatD()
makasih mas hafizh ..
tanya lagi untuk eror di bagian private ArrayList values;
apa buat class lagi ..??
Errornya bagaimana ya?
Coba cek di logcat http://www.twoh.co/2013/02/mengatasi-force-close-pada-aplikasi-android-menggunakan-logcat/
eror private ArrayList values;
apa buat class lagi?
ArrayList harus didefine tipe isinya, contoh yang benar : values;
ArrayList
mas.. kalo untuk menampilkan jarak dari lokasi user ke lokasi tujuan??
contoh source code /link 🙂
monggo, gambaran besar nya di sini http://www.twoh.co/2013/09/menampilkan-rute-tercepat-driving-direction-di-antara-dua-koordinat-pada-android-maps-v2/
Semoga bisa mengikuti 😀
mas, saya ada eror pada bagian MapsActivity ‘import com.map.model.DBLokasi;’ apa harus buat class lagi? sama ada eror di bagian “(lokasi.getLat(), lokasi.getLng());” dan “(lokInit.getLat(), lokInit.getLng());” juga ini “(lok.getLat(), lok.getLng());” ? 😀
Oh iya, untuk source lengkapnya silahkan compile di mari gan https://github.com/twoh/TWOH-MapsV2/
gan, ane mau nanya kalo kita mau nambahin posisi tujuan gimana ya caraanya dan tambahanya, tkhs gan, gasssspollll
Mas gimana caranya jika kita mau membuat pencaian lokasi langsung di map nya?
Data dari pencarian tersebut juga di ambil dari data sqlite yang ada
mohon bantuannya mas
masih pemula 😀 😀
Thanks
berarti kalo mau bikin apps tentang pom bensin terdekat gitu bisa dengan location manager ini kan ya gan
Bisa sekali mas bro, lebih mudah lagi menggunakan Place Picker untuk mengambil data tempat… cek post saya yang ini 🙂
http://www.twoh.co/2015/04/android-places-api-membuat-placepicker-sederhana/
Saya mau tanya, kira2 ada tidak tutorial aplikasi yang berbasis LBS yang membutuhkan server dan web application/web service yang berfungsi untuk menampung data gambar dan informasi yang dikirim dari aplikasi androidnya
Mas database nya dimana
db nya pakai SQLite
Mas hafidz, apakah bisa ketika marker di LBS di sentuh akan menampilkan gambar dan data2 tentang lokasi tsb ?
bisa gan
mas tolong buat tutorial ini yang untuk android studio?
hello mas, apakah mas bs memberikan referensi untuk pembuatan aplikasi android untuk pencarian suatu lokasi menggunakan google maps api v2, contohnya : pencarian rumah makan di bandung, jadi aplikasi tersebut memberikan list rumah makan di bandung, setelah di click salah satu, muncul detail rmh makan yg di pilih dan di bawahnya ada button untuk mengarahkan ke layout peta lokasi rmh makan tersebut. mohon bantuanya
That’s kind of tutorial requires our premium services. 🙂 Go to our Jasa Konsultasi page for more details.
maaf mas, mau tanya, ini lagi ada tugas kuliah membuat LBS leasing yang ada di kota saya, kira kira ada gak tutorialnya mas ?? terimakasih
saat mau di compile kok selalu eror mas package nya main class nya tidak ketemu..
gan,bisa bantu buat tutorial yang kayak gojek??yg bisa ngelacak lokasi penumpang pas masuk di aplikasi dan bisa menghitung jarak perpindahannya??mohon bantuannya gan…thanks
That’s kind of tutorial requires our premium services. ? Go to our “Jasa Konsultasi” page for more details.
Hallo ka, saya mau buat aplikasi semacam gojek tp ini mendeteksi pedagang kaki lima disekitar kita. Nah bagaimana cara mengirim lokasi pedagang ke aplikasi kita agar bs terbaca dan muncul dalam maps terimakasih
kalo itu harus menggunakan back-end server, jadi nanti lokasinya dikirimkan ke server dulu baru setelah itu app bisa fetch location dari server
Malam gan, klo mau menampilkan lokasi terdekat dari posisi kita gimana ya, trus di tampilkan juga waktu tempuh nya, data” nya sdh saya inputkan ke web service, jadi di list gtu kan di urutkan dari yg terdekat, terima kasih gan
Ada bisa menggunakan Direction API dari Google, more info di sini http://www.twoh.co/2013/09/menampilkan-rute-tercepat-driving-direction-di-antara-dua-koordinat-pada-android-maps-v2/
terima kasih mas respon nya, setelah saya gugling ternyata yang saya maksud adalah metode haversine, jadi gini, saya telah menyimpan data id, nama, lat, lng di api, nah skrg saya mau list berdasarkan lokasi terdekat, di tampilkan juga informasi jaraknya, gitu mas..
terima kasih sebelumnya..
tq gan, buat skripsi nih
gan saya kan mau buat aplikasi pencarian hotel, nah untuk memasukan koordinat2 hotelnya gimana yaa???
mas. mau nanya kalau ingin mengetahui titik koordinat menggunakan google maps api melalui android baagaimana caranya ya mas?
maksudnya gimana ya? kalo ingin tahu koordinat lokasi pengguna bisa baca tutorial berikut https://www.twoh.co/2017/02/11/tutorial-belajar-mendapatkan-lokasi-pengguna-di-android-studio-menggunakan-fused-location-api/
halo mas, saya seorang pemadam kebakaran dki jakarta, saya sangat ingin sekali setiap petugas mempunyai aplikasi map yang bilamana sedang terjadi kebakaran dapat dengan mudah meng akses lokasi yg terbakar tersebut lewat aplikasi seperti ini, hingga dapat mempersingkat waktu jarak yg akan di tempuh dan dapat meminimalisir miss communication antar petugas, dan dapat memberikan informasi kepada masyarakat lokasi pos pemadam kebakaran yg terdekat berikut gambar dan nomor tlp pos pemadam tersebut ketika di klik bisa tidak mas?
bisa saja mas
Om ada tutorial yang buat nampilin pencarian lokasi terdekat ?
Permisi mas kok saya error di sini Error:Cannot read packageName from /home/arieftebe/Documents/Portfolio/Android/Tutor/twoh-mapsv2/src/main/AndroidManifest.xml