Membuat Aplikasi Location Based Services di Android Menggunakan Maps API v2

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 :

Get Current User Location

Get Current User Location

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Klik “View On Map” untuk membuat visualisasi dari lokasi dimana kalian berada B-)

View On Map v2

View On Map v2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dan inilah yang muncul ketika kalian klik pada Marker :

Click on Marker

Click on 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 ! 🙂





Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

51 Comments
  1. guge faizal August 11, 2014
    • Hafizh Herdi Naufal August 29, 2014
      • Gagas September 13, 2016
  2. chandra yudhistira September 15, 2014
  3. friandi September 26, 2014
    • friandi September 26, 2014
  4. friandi October 1, 2014
    • Hafizh Herdi Naufal October 29, 2014
  5. rorik Budi October 6, 2014
  6. arif October 19, 2014
  7. Harry November 11, 2014
  8. ragil December 28, 2014
  9. Fitra April 20, 2015
  10. Chiku April 20, 2015
  11. Herdian Chandra April 25, 2015
  12. Rizky May 4, 2015
  13. adrian June 10, 2015
  14. gon June 19, 2015
  15. Sean July 27, 2015
    • Hafizh Herdi July 27, 2015
  16. Boy An March 5, 2016
  17. bagus April 15, 2016
  18. sukmo June 12, 2016
    • Hafizh Herdi June 12, 2016
  19. Amelia October 19, 2016
    • Hafizh Herdi October 20, 2016
  20. khairil November 13, 2016
  21. bobeat November 20, 2016
  22. aditya pratama January 18, 2017
  23. norhadi March 2, 2017
  24. rudy wahyudy March 15, 2017
  25. danang August 3, 2017
  26. Arief Turbagus October 27, 2017

Leave a Reply

Your email address will not be published. Required fields are marked *

TWOH&Co.