Menampilkan Lokasi GPS pada GoogleMap android V2

Android menjadi Spesial karena ada fitur GPS dan Mapnya. Aplikasi kelihatan lebih keren jika ada fitur mapnya. GPS dan Map adalah suatuhal yang saling mengisi dengan adanya dua fitur tersebut kita bisa membuat aplikasi yang ciamik dan useful dimata user. Ciamiknya mungkin seperti penampilan Bayern Lawan Chelsea.

Tadi pagi kebetulan saya melihat pertandingan sepakbola perebutan Piala Super Eropa antara Bayern Munchen dan Chelsea dimana mereka adalah juara Liga Champion dan Piala UEFA (Liga Eropa) duel klasik antara dua pelatih hebat PEP Guardiola dan Jose Mourinho tak bisa dihindari. Rasanya buat yang menonton pertandingan tadi akan bilang dalam hati tidak rugi bela-belain bangun jam 2. Pertandingannya menarik dan dramatis. Bagaimana tidak dramatis, Chelsea yang sudah diambang juara kebobolan dimenit terakhir oleh Javi Martinez yang memaksa pertandingan diselesaikan dengan adu penalti yang akhirnya dimenangkan oleh Bayern Munchen.

Luar biasa dan salut untuk pemain Bayern yang pantang menyerah mengejar Gol sampai menit terakhir dilakukan.

Salut juga untuk Chelsea yang walaupun dengan 10 orang mampu memberikan perlawanan yang ketat.

Nah bagaimana dengan kita. Khususnya untuk adik-adik mahasiswa yang sedang skripsi hayoo tetap semangat jika masih ada waktu untuk menyelesaikannya. Berusahalah sekuat tenaga untuk menyelesaikannya. Berusahalah untuk lulus tepat waktu karena disitu kita masih banyak teman sekelas yang berjuang bersama yang saling bantu dan menyemangati. Kalau kita ketinggalan kereta maka kita ikut kereta berikutnya (adik kelas) dimana disini rasa kebersamaanya tentu jauh berbeda malah mungkin kita tidak kenal dengan adik kelas kita. Tidak ada lagi teman yang mengingatkan dan membantu.

Uraian diatas hanya pendahuluan sekarang mari kita kembali kemateri. Materi kali ini masih tentang GPS dan MAP yaitu menampilkan lokasi kita pada Map V2. Sebetulnya kalau rajin search digoogle materi ini sudah banyak disajikan. Intinya untuk menampilkan current lokasi pada Map, berarti kita harus menambhkan kode yang bisa menangkap koordinat yang didapat dari GPS Android. Untuk lebih jelasnya Mari kita mulai dan ikuti langkah berikut ini.

1. Buka lagi project Peta Lokasi

2. Buat Layout baru dengan nama current_loc.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   >

		 <fragment
	        android:id="@+id/mapcurrloc"
	        android:layout_width="match_parent"
	        android:layout_height="match_parent"
	        class="com.google.android.gms.maps.SupportMapFragment" >
	    </fragment>
</RelativeLayout>

3. Buat class activity baru dengan nama DisplayCurrentLocActivity, lalu ketikan kode berikut

package net.agusharyanto.petalokasi;

import java.util.ArrayList;

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
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;

public class DisplayCurrentLocActivity extends FragmentActivity {
	GoogleMap googlemap;
	MarkerOptions markerOptions;
	LatLng latLng;
	LatLng prevLatLng = null;
	Marker marker = null;
	ArrayList<LatLng> arrline = new ArrayList<LatLng>();
	private LocationManager locManager;
	private LocationListener locListener;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_revers_geocode);

		FragmentManager fragmentManager = getSupportFragmentManager();
		SupportMapFragment supportMapFragment = (SupportMapFragment) fragmentManager
				.findFragmentById(R.id.mapcurrloc);

		// Getting a reference to the map
		googlemap = supportMapFragment.getMap();
		initLocationManager();
	}

	/**
	 * 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) {

				displayCurrentLoctoMap(newLocation);
			}

			public void onProviderDisabled(String arg0) {

			}

			public void onProviderEnabled(String arg0) {
				Location location = locManager
						.getLastKnownLocation(LocationManager.GPS_PROVIDER);
				displayCurrentLoctoMap(location);
			}

			public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
			}
		};
		locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
				locListener);
		Location location = locManager
				.getLastKnownLocation(LocationManager.GPS_PROVIDER);
		displayCurrentLoctoMap(location);
	}

	/**
	 * This method will be called when current position changed is submitted via
	 * the GPS.
	 *
	 * @param newLocation
	 */
	protected void displayCurrentLoctoMap(Location newLocation) {
		try {
			LatLng currlok = new LatLng(newLocation.getLatitude(),
					newLocation.getLongitude());

			if (marker != null)
				marker.remove();
			marker = googlemap.addMarker(new MarkerOptions()
					.position(currlok)
					.title("Current Location")
					.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)));
			googlemap.moveCamera(CameraUpdateFactory.newLatLngZoom(currlok, 15));
			// first remove old overlay
		} catch (NullPointerException e) {
			Toast.makeText(DisplayCurrentLocActivity.this,
					"Can't get gps location, make sure your gps is enable",
					Toast.LENGTH_LONG).show();
		}
	}

}

4. Rubah AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.agusharyanto.petalokasi"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="17" />

    <permission
        android:name="net.agusharyanto.petalokasi.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <uses-permission android:name="net.agusharyanto.petalokasi.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="net.agusharyanto.petalokasi.DisplayCurrentLocActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyAkJYisD9-6HB8D1ggkkWKZVtgNCLg8Fyk" />
    </application>

</manifest>

Disini Kita harus merubah launcher Activitynya menjadi net.agusharyanto.petalokasi.DisplayCurrentLocActivity agar pada saat Program dijalankan Activity yang pertama kali dijalankan adalah DisplayCurrentActivity.

5. Aplikasi sudah siap dijalankan, apabila menjalankannya di emualator jangan lupa menembakkan terlebih dahulu melalui emulatol control

6. Run Aplikasi, apabila semua berjalan lancar maka tampilannya akan seperti ini.

7. Sekarang kita sudah berhasil menampilkan marker posisi kita dipeta, Pertanyaannya adalah apakah user tahu ini daearah mana atau tepatnya alamatnya current lokasinya apa ?. Kalau yang sudah hafal daerahnya pasti dengan mudah menjawabnya. Tapi kalau tidak hafal daerahnya tentu bingung ini dimanayah.

8. Tunggu Jawabannya diepisode selanjutnya…

Semoga bermanfaat

Salam Hangat Developer Android

Agus Haryanto

Trainer Android

Pembicara Seminar IT

25 comments to Menampilkan Lokasi GPS pada GoogleMap android V2

  • RendyRidianto

    om ane koq buat map gabisa muncul petanya ya?cuma kotak2 ..kenapa ya

  • Dieka

    Ditunggu tutorial selanjutnya mas.
    Bahas geocoder juga ya, masih bingung di geocoder 😀

  • Agus Haryanto

    @Rendy, Koneksi Internetnya jalan ?. Pastikan key api googlempnya benar.

  • Agus Haryanto

    @Dieka. ssstt masih rahasia 🙂

  • RendyRidianto

    jalan mas ,.keynya jg benar ,.apanya ya kira2?

  • Dian

    iya om, ane sama ama Rendy, muncul map tapi kotak2 doank, dan ketika pake map API2 malah ada eror

  • fanshur

    Mas Agus . ada tips dan triknya ngak mas kalo kita pengen nempelin map citra kita sendiri ke dalam aplikasi kita..Thanks before

  • fanshur

    atau kalo kita menggunakan Bing maps sebagai sumber nya mas

  • Unknown

    Mas, ini bisa di running di emulator gak ya? saya coba ga bsa di emulator.

  • Deddy Effendi (ex eS)

    cang agus thanks atas primbonnya y?? ane jadi be peta maps 2…
    gimana kabarnya cang???:D

  • Agus Haryanto

    @unknown, Saya menyarankan untuk running langsung di Handphone.

  • andrew

    INFO : Bagi Teman” yang punya masalah dengan peta yang tidak jalan di hp android (BUKAN DI EMULATOR) harap mengunjungi link ini > https://github.com/googlemaps/hellomap-android, terus pilih button di bagian kanan bawah “DOWNLOAD ZIP”, setelah itu ikut tutorial yang ada di bagian bawah. DIJAMIN PASTI JALAN.

  • Samsul

    Mas saya mau tanya,
    sebelumnya saya sdh buat aplikasi map memakai GoogleMaps android V1 dan sukses jalan aplikasinya
    Namun laptop yang saya pakai diinstal ulang OS nya
    kalau saya ingin upgrade ke GoogleMaps Android V2 apa ada yang hrs dirubah codingannya?
    atau cuma ganti GoogleMaps API key nya saja?
    untuk GoogleMap API V2 nya saya sdh ada
    Mohon bantuannya
    Terima Kasih

  • @andrew udah aku coba yang dari github.com… tapi kok malah “unfortunately, Hello Map has stopped ” :(( aku butuh banget tolong

  • import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    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;

    dibagian ini kenapa selalu error yah.. ?

  • agungs

    @fauzi, klik kanan project >> properties >> android >> cek dulu udah di add apa belum librarynya..

  • agungs

    error disini mas.. >> setContentView(R.layout.activity_revers_geocode);
    mohon bantuannyamas..

  • agungs

    error disini mas.. >> setContentView(R.layout.activity_revers_geocode);
    mohon bantuannya mas..

  • import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    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;

    permaslahan sma sperti di atas,…bgmn cara mengatasinya yah??
    untuk menambah library ny caranya seperti ap yah,..
    mohon bantuannya,..thanks…

  • sudah work dengan permsalahan di atas,…solved,…sudah menemukan cara nya,..thanks

  • mas saya udah coba sama persis di atas tetapi ketika aplikasi d jalankan di emulator, aplikasi stopped working unfurnetely,….itu kenapa yah?
    mohon solusinya,…thanks

  • Rizanuary

    Mas agus, itu yg (R.layout.activity_revers_geocode) itu salah ketik apa benar mas? apa di ganti (R.layout.current_loc) mas? soalnya panggil xml curent_loc.xml

    mohon mas pencerahannya.

  • Reza

    getSupportFragmentManager kok is undefined ya om?
    mohon solusinya.

  • Reza

    mau tanya om, agar peta dapat di zoom dan gak balik lagi itu gmn ya?. apa ada yg harus di tambah atau di buang?

  • gesdi

    maaf om mau tanya, setelah kita mendapatkan posisi kita, cara untuk mengirim latitude longitude posisi kita ke activity lain dengan button gimana ya? terimakasih

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>