Tutorial Android Menampilkan Lokasi GPS pada Google Map

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://developer.android.com

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

56 comments to Tutorial Android Menampilkan Lokasi GPS pada Google Map

  • Yulia

    pak, kalo kita input sendiri longlat nya , berarti GPSnya gak dapet secara langsung dari satelit dong ?
    mohon pencerahannya pak ..
    terima kasih

  • Agus Haryanto

    @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.

  • newDroids

    mas, request aplikasi google maps yang bisa nentuin jarak terdekat dong..
    hhe

  • sam

    makasi mas tutor2nya, sangat bermanfaat buat saya yg sedang belajar coding Android…:D

  • Risdilah

    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 🙂

  • Nugroho

    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

  • bimo

    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

  • Agus Haryanto

    @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

  • Udin

    mas kalo mau bikin markernya ada ditengah koordinatnya gimana ya?
    yang saya bikin markernya muncul disebelah kiri lingkaran koordinatnya

  • riveral

    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 🙂

  • Erik

    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……

  • gede

    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…??

  • fandi

    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.

  • Yugie

    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 😀

  • Yugie

    @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.. 😀

  • Yugie

    @yulia mau bantu, bisa ko coba aja Install di Devicenya 😀

  • Wiratama

    saya pemula nie,,, wuda tk coba codingnya sesuai step kok mapnya gk tampil y mas?? padahal gk ada tanda salahnya??? knapa tu mas…..

  • Dedek

    kerennn2 masss tutorialnya!!! 😀
    kalo mas bikin buku, pasti laku keras deh,,
    4 jempol q bwt mas..

  • dadng

    mas minta caranya key api map buat hp android

  • putra

    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?

  • rin

    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 ^^

  • dimz

    mau tanya sama mastah sekalian, kok ane udah ganti koordinatnya pake emulator control g keganti mapnya ke koordinat yg ditulis d emulator control yah???

  • kanda

    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?

  • ojan

    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.

  • rahadyan

    Mz mau nany ni,, gmn cara iconny it menunjukkan lokasi divace/emulator brada?

    thank`s . .

  • bima

    mau nanya mas…
    saya udah coba codingannya, tapi kok iconnya ga keluar ya? atau aplikasi harus dijalankan di ruang terbuka?

  • Dian

    Pak mau tanya…kalau mau menangkap lokasi dari user lain bagaimana caranya…seperti aplikasi finder friends…Mohon jawabannya,,,

  • Arief

    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?

  • nony

    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.

  • Dimas Yudha

    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

  • Carolina

    saya udah ngecoba aplikasi ini kenapa markernya ngga mau jalan ya pak????
    mohon bantuannya

  • Arief

    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

  • Arief

    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

  • rezha

    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?

  • rizky

    mas bs bwt aplikasi gis menentukan ttk kordinat yg online??

  • mas ada source code atau tutor untuk membuat rute terpendek di android ga mas???

  • Ryan Wibowo

    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.

  • bunga

    mas.. kalo pada emulator control.. Latitude dan Longitude pada location control tidak bisa diubah itu kenapa ya?

  • lia

    mas, kok ini force close kenapa ya? padahal gak ada yang salah,
    mohon bimbingannya, buat tugas besar ini mas 🙂

  • RF

    iya saya juga force close knp ya? saya juga mau buat tugas besar mas, mohon bimbingan nya..

  • hendra

    gan kok markernya gak keluar

  • gama

    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

  • DHANU

    keren mas thanks buat tutorialnya

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>