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

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>