Juma lagi dengan agus haryanto dalam seri tutorial android. Sudah lama juga yah, kita tidak membahas GPS dan Map. Pada tutorial terdahulu kita sudah belajar mengenal GPS dan Map. Dan ada beberapa pembaca baik melalui email ataupun komentar yang menanyakan bagaimana mengabungkan keduanya, yaitu menampilkan koordinat posisi yang didapat GPS ke dalam MAP.
Seperti biasa, kita bisa minta bantuan Google untuk mencari solusinya. Alhamdulillah ketemu link yang bagus dan kodenya efisien di http://blogs.itemis.de/frey/2009/04/07/location-based-services-on-android-part-2/
Oke sekarang mari kita implementasikan kode dalam link tersebut ke project kita.
1.Buat Project baru dengan nama LokasiKu
2. setelah project tercreate maka secara otomatis android membentuk 3 file yaitu :
- main.xml
- string.xml
- TunjukLokasiBeraksi.java
3. Agar Kita dapat melihat posisi kita pada map maka kita harus menandakan dengan dengan gambar atau icon, dalam dunia google map ini disebut marker. Untuk itu kita perlu meletakkan file gambar untuk marker (marker.png) di directory resàdrawable-mdpi
4. Edit main.xml lalu isikan kode berikut
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.MapView android:id="@+id/mapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey="key Google Map" /> </RelativeLayout>
Disini untuk menampilkan MAPnya kita menggunakan tag com.google.android.maps.MapView sedangkan untuk Layoutnya adalah Relative Layout
Untuk android:apiKey, isi dengan key Google Map cara buatnya ada di Belajar Android Pengenalan GoogleMap
5. Untuk dapat melakukan menampilan Map Google Map dan Menangkap GPS dari satelit kita perlu menambahkan <uses-library>
com.google.android.maps dan <uses-permission> INTERNET, ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION nya melalui file AndroidManifest.xml , buka file AndroidManifest.xml lalu ketikkan seperti kode berikut
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.agus.gpsmap" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="com.google.android.maps" /> <activity android:name=".TunjukLokasiBeraksi" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> </manifest>
6. Sekarang Mari kita edit File TunjukLokasiBeraksi.java
package com.agus.gpsmap; import java.util.Iterator; import java.util.List; import android.content.Context; import android.graphics.drawable.Drawable; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapView; import com.google.android.maps.OverlayItem; /** * Aplikasi ini mendemonstrasikan untuk menampilkan lokasi posisi koordinat GPS kita saat ini * Pada MAP * @author frey dan diedit oleh Agus Haryanto */ public class TunjukLokasiBeraksi extends MapActivity { private MapView mapView; private LocationManager locManager; private LocationListener locListener; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initMap(); initLocationManager(); } /** * Initialize the map to the LinearLayout. */ private void initMap() { mapView = (MapView) findViewById(R.id.mapView); mapView.displayZoomControls(true); mapView.getController().setZoom(15); } /** * Initialize the location manager. */ private void initLocationManager() { locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locListener = new LocationListener() { //method ini akan dijalankan apabila koordinat GPS berubah public void onLocationChanged(Location newLocation) { tampilkanPosisikeMap(newLocation); } public void onProviderDisabled(String arg0) { } public void onProviderEnabled(String arg0) { } public void onStatusChanged(String arg0, int arg1, Bundle arg2) { } }; locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener); } /** * This method will be called when current position changed * is submitted via the GPS. * @param newLocation */ protected void tampilkanPosisikeMap(Location newLocation) { List overlays = mapView.getOverlays(); // first remove old overlay if (overlays.size() > 0) { for (Iterator iterator = overlays.iterator(); iterator.hasNext();) { iterator.next(); iterator.remove(); } } // transform the location to a geopoint GeoPoint geopoint = new GeoPoint( (int) (newLocation.getLatitude() * 1E6), (int) (newLocation .getLongitude() * 1E6)); // initialize icon Drawable icon = getResources().getDrawable(R.drawable.marker); icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon .getIntrinsicHeight()); // create my overlay and show it MyItemizedOverlay overlay = new MyItemizedOverlay(icon); OverlayItem item = new OverlayItem(geopoint, "My Location", null); overlay.addItem(item); mapView.getOverlays().add(overlay); // move to location mapView.getController().animateTo(geopoint); // redraw map mapView.postInvalidate(); } @Override protected boolean isRouteDisplayed() { return false; } }
7. Buat Class Baru dengan nama MyItemizedOverlay.java funngsi untma class ini adalah untuk marker (icon penunjuk posisi kita pada Map)
package com.agus.gpsmap; import java.util.ArrayList; import java.util.List; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.MapView; import com.google.android.maps.OverlayItem; public class MyItemizedOverlay extends ItemizedOverlay { private List items; private Drawable marker; public MyItemizedOverlay(Drawable defaultMarker) { super(defaultMarker); items = new ArrayList(); marker = defaultMarker; } @Override protected OverlayItem createItem(int index) { return (OverlayItem)items.get(index); } @Override public int size() { return items.size(); } /* * (non-Javadoc) * * @see * com.google.android.maps.ItemizedOverlay#draw(android.graphics.Canvas, * com.google.android.maps.MapView, boolean) */ @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); boundCenterBottom(marker); } public void addItem(OverlayItem item) { items.add(item); populate(); } }
8. Selesai sudah , sekarang mari kita run projectnya.
9. Kalau kita runnya pakai emulator kita bisa mengupdate lokasinya secara manual,
Kalau di eclipse kita bisa menggunakan emulator control. Apabila jendela Emulation Control belum ada,
kita bisa menampilkannya dengan cara klik Window –> Show View –>Other
Pilih Emulator Control lalu klik OK
isikan saja Longitude = 106.85324 dan Latitute= –6.23326
Klik tombol Send
Kembali ke Emulator Android dan lihat apa yang terjadi
Lokasi yang kita isikan tadi ditunjukkan tampil di peta (Map).
Jika kita mengupdate lokasinya dengan nilai yang lain maka marker akan pindah ke koordinat yang kita isikan
Kalau mau lebih terasa coba install di HP android langsung. Jangan lupa GPSnya dinyalakan. Agar lebih cepat dapat GPSnya cari tempat yang langsung bisa melihat kelangit. Dan buktikan ketepatanya 🙂
Wah kalau kita sudah bisa menampilkan current lokasi kita dimap berarti ini bisa kembangkan untuk membuat Aplikasi LBS (Location Base y).
Jadi kita bisa tahu ada apa saja di sekitar kita. Misalkan kita ingin tahu Rumah Makan Padang yang terdekat dengan lokasi kita.
Satu lagi biar tambah menarik fitur dari googlemap di android yaitu dapat menterjemahkan suatu koordinat menjadi alamat atau sebaliknya. Silahkan dalami tentang API GoogleMap Geocoder dan Reverse Geocoder
Sebelum baca tutorial ini anda dianjurkan membaca tutorial Belajar Android Pengenalan GPS dan Belajar Android Pengenalan GoogleMap
source : {filelink=6}
Semoga Bermanfaat
Salam Hangat
Agus Haryanto
Sumber :
http://blogs.itemis.de/frey/2009/04/07/location-based-services-on-android-part-2/
isikan saja Longitude = 106.85324 dan Latitute=-6.23326
Klik tombol Send
Kembali ke Emulator Android dan lihat apa yang terjadi
pak, kalo kita input sendiri longlat nya , berarti GPSnya gak dapet secara langsung dari satelit dong ?
mohon pencerahannya pak ..
terima kasih
@Yulia, Kita input manual itu agar hanya di emulator. karena emulatork nggak ada gpsnya maka data koordintanya kita input manual. Kalau ini kita jalankan langsung di HP Android maka data masukkannya adalah koordinat yang didapat dari GPS.
mas, request aplikasi google maps yang bisa nentuin jarak terdekat dong..
hhe
makasi mas tutor2nya, sangat bermanfaat buat saya yg sedang belajar coding Android…:D
Saya mencoba untuk mengikuti tutorial yang sudah di tulisakan di atas. Saya ingin mencoba mengembanganya dengan menambahkan fitur latitude seperti yang ada pada Gtalk, apakah bisa? mohon bimbinganya trimakasih 🙂
nanya Mas, saya nyoba kok g bsa jalan y??
“The application LokasiKu(process com.agus.gpsmap) has stopped unexpectedly.” pesannya gtu Mas..
salahnya dmn y??
maklum newbie mas hehe
mas agus saya udah coba buat aplikasi ini lewat emulator bisa jalan tetapi pas udah install di hp kok gak muncul ya map nya :(, adakah solusi dari masalah ini mas? mohon pencerahannya
@bimo, Kalau pas diemulator keytstore yang digunakan adalah debugkey(khusus untuk development).
sedangkan biasanya yang untuk install di HP kita membuat APK file dengan menggunakan keystore yang kita buat sendiri (baru) nah untuk Key GoogleMapnya harus digenerate dari keystore ini
jos mantap
coba dulu ah
baru belajar tentang android nih mas agus
mas kalo mau bikin markernya ada ditengah koordinatnya gimana ya?
yang saya bikin markernya muncul disebelah kiri lingkaran koordinatnya
hai mas salam…
saya mau nanya ni .. saya ingin buat sebuah aplikasi untuk menampilkan 2 penunjuk satu tempat kita berada dan satu lagi tempat yang saya tuju … dan membuat sebuah rute terpendek dari tempat asal ke tujuan .. itu kira2 gimna ya mas…
mohon pencerahan ya 🙂
Mas bagus euy, gimana kalo baca koordinatnya dari perangkat yang mempunyai GPS ???
Gimana caranya kita bikin program yang bisa menerima data koordinat GPS denga HP android yang punya fasilitas GPS. BTW kedepan qt bisa bikin pesawat tanpa awak dengan Otak HP android gitu lo……
trims gan…tapi gambar marker saya kok ga nampak ya….cuma nampak petanya doang…apa ada hubungannya dengan versi sdk yang saya pake versi 9…??
pak agus,mau nanya napa klo GPS nya di aktifin ko bayangan marker kedip-kedip..
Dear Pak Agus,
Mantap tutorialnya pak, baik penjelasan maupun source code nya.
Keren Mas tutorialnya Mantap!, Oh iya mas Saya sudah ikut sesuai tutorial ini dan berhasil sukses :D,cuma saya ada permasalahan kenapa ya saya mau coba tambah file xml utk bikin graphical layout tapi ko malah Missing Theme terus ya, jd gak bisa bikin antarmuka di .xmlnya kalo Build Targetnnya pake Google APIs, kalo Pake Build target biasa Android 2.2 itu bisa. Ada Solusinya Mas?
Thx ya sblmnya 😀
@Fandi mau sedikit bantu itu sebenernya kedip2 karena lokasi latitude nya ternyata berubah2 trs, coba deh pasang toast :http://www.firstdroid.com/2010/04/29/android-development-using-gps-to-get-current-location-2/ nanti keliatan disitu perubahannya. Nah, untuk perubahan ini ada solusi gak mas? Saya sendiri belum dapet solusinya harus gmna, hehe 😀
Thx.. 😀
@yulia mau bantu, bisa ko coba aja Install di Devicenya 😀
saya pemula nie,,, wuda tk coba codingnya sesuai step kok mapnya gk tampil y mas?? padahal gk ada tanda salahnya??? knapa tu mas…..
kerennn2 masss tutorialnya!!! 😀
kalo mas bikin buku, pasti laku keras deh,,
4 jempol q bwt mas..
mas minta caranya key api map buat hp android
masalah saya sama dengan Wiratama..
“saya pemula nie,,, wuda tk coba codingnya sesuai step kok mapnya gk tampil y mas?? padahal gk ada tanda salahnya??? knapa tu mas…..”
gimana ya mas solusinya?
maaf mo tanya nih mas, ini kl dijalanin di device androidna, bisa langsung detect koordinat kita ga mas? kl ga bisa langsung, cara langsungna gmn?
masih newbie tentang LBS ^^
mau tanya sama mastah sekalian, kok ane udah ganti koordinatnya pake emulator control g keganti mapnya ke koordinat yg ditulis d emulator control yah???
saya mau tanya pak, kalau lokasi gps tidak dapat(sinyal hanya GSM), bagaimana cara mendapatkan lokasinya yah..
terima kasih
halo mas, sy coba d hp langsung selalu force close, kbetulan d hp gio sy pake CyanogenMod 7.
kira2 karna apa ya?
keren gan!!!:D
ana mo nanya gan, gmn caranya ngitung jarak dari (titik A ke titik B) misal titik A ana ketahui long ama lang nya (-8.678885,115.205101), trus titik B (-8.71032,115.167207), trus dah ane simpen pake PHP Mysql. gmn cara mengetahui jaraknya dlm Km trus di tampilin di emulatornya Android. thx b4 gan…:D
mas agus,,,kalau untuk buat semacam lititude kaya gimana ya??
mohon pencerahannya..
makasih
Mas Gmana Cara Yang Detail Utk Generate Dari Keystore yg kita buat. kemarin saya buat peta.keystore tp kok gak bisa di generate.
Mz mau nany ni,, gmn cara iconny it menunjukkan lokasi divace/emulator brada?
thank`s . .
mau nanya mas…
saya udah coba codingannya, tapi kok iconnya ga keluar ya? atau aplikasi harus dijalankan di ruang terbuka?
Pak mau tanya…kalau mau menangkap lokasi dari user lain bagaimana caranya…seperti aplikasi finder friends…Mohon jawabannya,,,
nanya pak, saya nyoba kok ga bisa jalan ya??
“The application LokasiKu(process com.agus.gpsmap) has stopped unexpectedly.” pesannya gitu pak..
salahnya dmn ye?
pak mau tanya, apakah gps di android bisa secara otomatis mengirimkan long lat nya??
kalau tidak bagaimana caranya supaya bisa otomatisterkirim ke web gis yang dibbuat. mohon jawabannya.
mas seperti na script na tidak lengkap…. ada beberapa yang janggal… seperti komen List, harusnya ada stiring na… ex: List mohon pencerahan, tq
Mantap mas tutorialnya
saya udah ngecoba aplikasi ini kenapa markernya ngga mau jalan ya pak????
mohon bantuannya
buat pak agus, dan temen2 yg mau membantu. saya bikin aplikasi ini, semua saya ikutin. tapi kenapa saya IMPLEMENTASI di HP itu ga bisa ya? saya ikutin tutorial dari web laen juga gitu. ga keluar mapnye, tapi marker keluar. mohon pencerahan
pak agus dan teman2, mohon bantuannye ye…
kemungkinan kenape aplikasi ini ga bisa jalan di hp adalah masalah di API. takutnye API yg kita masukin hanya bekerja di emulator saja.
mohon bantuannye pak agus. untuk semester terakhir saya ini, sebelum DO T.T
mas, gimana caranya kalo kita mau nambahin lokasi2 semacam rumah makan dll? thanks
Tak coba di HP kok malah lari ke peta AMERIKA y pakde?
Bukannya kalo di HP dia makeknya koordinat GPS yang dikirimin sama HP kita pakde?
mas bs bwt aplikasi gis menentukan ttk kordinat yg online??
mas ada source code atau tutor untuk membuat rute terpendek di android ga mas???
Mas agus saya mau tanya, saya lagi buat aplikasi yg didalamnya ada map.
Saya jalankan di emolator tampilan map nya mau muncul tapi pas saya jalankan di hape saya koq tampilan map nya ga mau muncul, cuma muncul kotakan.
Itu dari mana yang salah ya? apakah hape saya perlu disetting API key atau gimana?
Mohon bantuanya.
mas.. kalo pada emulator control.. Latitude dan Longitude pada location control tidak bisa diubah itu kenapa ya?
mas, kok ini force close kenapa ya? padahal gak ada yang salah,
mohon bimbingannya, buat tugas besar ini mas 🙂
iya saya juga force close knp ya? saya juga mau buat tugas besar mas, mohon bimbingan nya..
gan kok markernya gak keluar
mas agus.. ini kan saya udah bikin map dari tutorial mas yang ada info windownya.. programnya jalan dengan marker dan lokasi yang sudah di tentukan.. gimana caranya supaya dari map info window ditambahkan dengan GPS dari lokasi kita.. mohon pencerahannya
keren mas thanks buat tutorialnya