PMO PERTEMUAN 10 LOCATION BASED SERVICES

PMO PERTEMUAN 10

LOCATION BASED SERVICE

Location based services adalah layanan berbasis lokasi atau istilah umum yang sering digunakan untuk menggambarkan teknologi yang digunakan untuk menemukan lokasi perangkat yang pengguna gunakan. Layanan ini menggunakan teknologi global positioning service (GPS) dan cell-based location dari Google.

Location Based Service (LBS) atau layanan berbasis lokasi adalah sebuah layanan informasi yang dapat diakses dengan perangkat bergerak melalui jaringan dan mampu menampilkan posisi secara geografis keberadaan perangkat bergerak tersebut. Location Based Service dapat berfungsi sebagai layanan untuk mengidentifikasi lokasi dari seseorang atau suatu objek tertentu, seperti menemukan lokasi mesin ATM terdekat atau mengetahui keberadaan teman. Selain itu, LBS tersebut terdiri dari beberapa komponen di antaranya mobile devices, communication network, position component, dan service and content providerMobile devicesmerupakan komponen yang sangat penting. Piranti mobile tersebut diantaranya adalah smartphonePDA, dan lainnya yang dapat berfungsi sebagai alat navigasi atau seperti halnya alat navigasi berbasis GPS.

Komponen communication network ini berupa jaringan telekomunikasi bergerak yang memindahkan data pengguna dari perangkat ke penyedia layanan. Position component yang dimaksud adalah posisi pengguna harus ditentukan. Posisi ini dapat didapatkan dengan jaringan telekomunikasi atau dengan GPS. Sedangkan service and content provideradalah penyedia layanan yang menyediakan layanan berbeda ke pengguna seperti pencarian rute, kalkulasi posisi, dan lainnya. Sederhananya, dengan layanan LBS kita dapat mengetahui posisi dimana kita berada, posisi teman, dan posisi rumah sakit atau pom bensin yang jaraknya dekat dengan kita. Dalam mengukur posisi, digunakan lintang dan bujur untuk menentukan lokasi geografis.Tetapi, Android menyediakan geocoder yang mendukung forward danreverse geocoding. Menggunakan geocoder, kita dapat mengkonversi nilai lintang bujur mejadi alamat dunia nyata atau sebaliknya.

LBS ini sudah banyak diterapkan oleh banyak aplikasi seperti GO-JEK, GRABBIKE, dan UberMotor. Konsep yang digunakan adalah para konsumen melakukan order dan sistem akan menampilkan driver yang berada dekat dengan konsumen. Selain aplikasi tersebut, banyak para developer yang membangun aplikasi Location Based Services seperti aplikasi untuk menemukan kos-kosan terdekat, menemukan restoran terdekat, dan lainnya. Bagi pembaca yang sedang mempelajari LBS, atau tertarik untuk mencoba membuat aplikasi yang mendukung fitur lokasi, pembaca dapat mencoba praktekan cara membuat aplikasi untuk mengambil koordinat lokasi pada smartphone Android.

Unsur Utama LBS

Dua unsur utama dari Location Based Service adalah:

  • Location Manager (API Maps): Menyediakan perangkat bagi sumber atau source untuk LBS, Application Programming Interface (API) Maps menyediakan fasilitas untuk menampilkan atau memanipulasi peta. Paket ini berada pada “com.google.android.maps;”.
  • Location Providers (API Location): Menyediakan teknologi pencarian lokasi yang digunakan oleh perangkat. API Location berhubungan dengan data GPS (Global Positioning System) dan data lokasi real-time. API Location berada pada paket Android yaitu dalam paket “android.location”. Lokasi, perpindahan, serta kedekatan dengan lokasi tertentu dapat ditentukan melalui Location Manager

Komponen LBS

Terdapat lima komponen pendukung utama dalam teknologi Layanan Berbasis Lokasi, antara lain:

  • Piranti Mobile, adalah salah satu komponen penting dalam LBS. Piranti ini berfungsi sebagai alat bantu (tool) bagi pengguna untuk meminta informasi. Hasil dari informasi yang diminta dapat berupa teks, suara, gambar dan lain sebagainya. Piranti mobile yang dapat digunakan bisa berupa PDA, smartphone, laptop. Selain itu, piranti mobile dapat juga berfungsi sebagai alat navigasi di kendaraan seperti halnya alat navigasi berbasis GPS.
  • Jaringan Komunikasi, Komponen ini berfungsi sebagai jalur penghubung yang dapat mengirimkan data-data yang dikirim oleh pengguna dari piranti mobile-nya untuk kemudian dikirimkan ke penyedia layanan dan kemudian hasil permintaan tersebut dikirimkan kembali oleh penyedia layanan kepada pengguna.
  • Komponen Positioning (Penunjuk Posisi/Lokasi), Setiap layanan yang diberikan oleh penyedia layanan biasanya akan berdasarkan pada posisi pengguna yang meminta layanan tersebut. Oleh karena itu diperlukan komponen yang berfungsi sebagai pengolah/pemroses yang akan menentukan posisi pengguna layanan saat itu. Posisi pengguna tersebut bisa didapatkan melalui jaringan komunikasi mobile atau juga menggunakan Global Positioning System (GPS).
  • Penyedia layanan dan aplikasi, merupakan komponen LBS yang memberikan berbagai macam layanan yang bisa digunakan oleh pengguna. Sebagai contoh ketika pengguna meminta layanan agar bisa tahu posisinya saat itu, maka aplikasi dan penyedia layanan langsung memproses permintaan tersebut, mulai dari menghitung dan menentukan posisi pengguna, menemukan rute jalan, mencari data di Yellow Pages sesuai dengan permintaan, dan masih banyak lagi yang lainnya.
  • Penyedia data dan konten, Penyedia layanan tidak selalu menyimpan seluruh data dan informasi yang diolahnya. Karena bisa jadi berbagai macam data dan informasi yang diolah tersebut berasal dari pengembang/pihak ketiga yang memang memiliki otoritas untuk menyimpannya. Sebagai contoh basis data geografis dan lokasi bisa saja berasal dari badan-badan milik pemerintah atau juga data-data perusahaan/bisnis/industri bisa saja berasal dari Yellow Pages, maupun perusahaan penyedia data lainnya.

Secara lengkap kelima komponen pendukung LBS tersebut dapat dilihat pada gambar berikut.

Cara Kerja LBS

Untuk menggambarkan cara kerja LBS, anggaplah aplikasi LBS akan mencarikan informasi mengenai lokasi restoran yang berada di sekitar posisi pengguna.

Anggaplah sekarang fungsi pencarian telah diaktifkan, posisi pengguna sebenarnya dari perangkat mobile diperoleh dari Positioning Service. Hal ini dapat dilakukan baik oleh perangkat menggunakan GPS sendiri atau layanan posisi jaringan yang berasal dari provider (Cell Tower). Setelah itu perangkat mobile pengguna mengirimkan permintaan informasi, yang berisi tujuan untuk mencari dan mengirimkan posisi melalui jaringan komunikasi ke gateway telekomunikasi.

Gateway memiliki tugas untuk bertukar pesan di antara jaringan komunikasi selular dan internet. Oleh karena itu dia mengetahui alamat web dari beberapa aplikasi server dan rute permintaan ke spesifik server tertentu. Gateway akan menyimpan juga informasi tentang perangkat mobile yang telah meminta informasi

Aplikasi server membaca permintaan dan mengaktifkan layanan yang terkait.

Kemudian, service menganalisis lagi pesan dan memutuskan mana informasi tambahan selain criteria pencarian (restoran + padang) dan posisi pengguna diperlukan untuk menjawab permintaan pengguna. Dalam kasusu ini service  akan menemukan bahwa pengguna membutuhkan informasi tentang restoran dari database yellow pages pada wilayah tertentu dan kemudian service  tersebut akan meminta penyedia data untuk memberikan data tersebut

Selanjutnya service akan menemukan bahwa informasi tentang jalan, jarak dan cara yang diperlukan untuk memeriksa apakah restoran dapat dicapai

Setelah sekarang semua informasi service akan melakukan buffer spasial dan query routing untuk mendapatkan beberapa restoran terdekat. Setelah menghitung daftar restora terdekat, hasil dikirim kembali ke pengguna melalui internet, gateway  dan jaringan mobile.

Kemudian, informasi mengenai restoran akan disampaikan kepada pengguna baik dalam bentuk peta digital.

Aplikasi Berbasis LBS

Berbagai macam contoh aplikasi berbasis LBS misalnya:

  1. Layanan Darurat. Contoh: E-911 dan Roadside Assistance
  2. Pelacakan (Tracking). Contoh: Commercial: workforce, fleet management. Family Locator, Personal Asset Tracking
  3. Contoh: Direction, Planning, Assistance
  4. Contoh: Road Tolling, Parking
  5. LBS Alert. Contoh: Promotion Alert, Advertising
  6. Jejaring Sosial. Contoh: Friend-Finder, Instant Messaging
  7. Aplikasi Operator Jaringan. Contoh: Location Sensitive Billing, Cellular Fraudulent Detection and Prevention, Wireless Network Optimization dan Cellular Inter-Network Border Negotiation.
  8. Aplikasi Penyedia Layanan. Contoh: Fleet Navigation and Management, Wireless M2M, Remote Access/Management Mobile Data/Television, Auto Insurance dan Promotion-Advertising
  9. Aplikasi Pengguna Akhir. Contoh: Foursquare, dll.

Penyedia Layanan LBS

Banyak perusahaan di dunia yang masuk menggarap layanan berbasis LBS. Beberapa di antaranya adalah (Wang, 2008):

  1. Sprint Navigation menyediakan layanan canggih yaitu memberikan panduan suara untuk para pengemudi kendaraan yang butuh petunjuk jalan dan arah beserta peta pergerakan yang berbasis tiga dimensi.
  2. Verizon Chaperone memanfaatkan telepon seluler anak-anak sebagai GPS yang akan membantu para orang tua bisa memantau dan mengetahui keberadaan anak-anak mereka. Layanan ini akan menyediakan informasi lokasi secara terus-menerus di piranti mobile orang tua.
  3. NTT DoCoMo i-Area menyediakan layanan LBS khusus para pengguna FOMA. Layanan ini meliputi security alert dan juga peningkatan efisiensi logistik bisnis.

Sumber :

http://mayangadi.blogspot.co.id/2013/01/location-based-service-lbs.html

http://supeeerblog.blogspot.co.id/2013/05/location-based-services-lbs.html

https://teknojurnal.com/pengertian-location-based-services-lbs-dan-komponennya/

GOOGLE MAPS

Google Maps adalah aplikasi peta online gratis dari Google. Google Maps dapat diakses melalui browser web atau melalui perangkat mobile. Anda dapat menggunakan Google Maps untuk mendapatkan arahan yang detail dari suatu lokasi, mencari informasi tentang bisnis lokal, dan banyak lagi!

Google Maps adalah layanan pemetaan web yang dikembangkan oleh Google. Layanan ini memberikan citra satelit, peta jalan, panorama 360°, kondisi lalu lintas, dan perencanaan rute untuk bepergian dengan berjalan kaki, mobil, sepeda (versi beta), atau angkutan umum.

Google Maps dimulai sebagai program desktop C++, dirancang oleh Lars dan Jens Eilstrup Rasmussen pada Where 2 Technologies. Pada Oktober 2004, perusahaan ini diakuisisi oleh Google, yang diubah menjadi sebuah aplikasi web. Setelah akuisisi tambahan dari perusahaan visualisasi data geospasial dan analisis lalu lintas, Google Maps diluncurkan pada Februari 2005.Layanan ini menggunakan JavascriptXML, dan AJAX. Google Maps menawarkan API yang memungkinkan peta untuk dimasukkan pada situs web pihak ketiga,dan menawarkan penunjuk lokasi untuk bisnis perkotaan dan organisasi lainnya di berbagai negara di seluruh dunia. Google Map Maker memungkinkan pengguna untuk bersama-sama mengembangkan dan memperbarui pemetaan layanan di seluruh dunia.

Tampilan satelit Google Maps adalah “top-down”. Sebagian besar citra resolusi tinggi dari kota adalah foto udara yang diambil dari pesawat pada ketinggian 800 sampai 1.500 kaki (240–460 meter), sementara sebagian besar citra lainnya adalah dari satelit.[3]Sebagian besar citra satelit yang tersedia adalah tidak lebih dari tiga berusia tahun dan diperbarui secara teratur. Google Maps menggunakan varian dekat dari proyeksi Mercator, dan karena itu Google Maps tidak dapat secara akurat menunjukkan daerah di sekitar kutub.

Google Maps untuk seluler dirilis pada bulan September 2008. Pada Agustus 2013, Google Maps bertekad untuk menjadi aplikasi yang paling populer di dunia untuk ponsel cerdas, dengan lebih dari 54% dari pemilik ponsel cerdas di seluruh dunia menggunakannya setidaknya sekali.

Google Maps berbeda dengan peta berbentuk kertas yaitu tidak terbatas pada satu negara atau daerah. Kenyataannya, Google Maps menyediakan peta hampir setiap negara di dunia. Google Maps menggunakan kombinasi dari citra satelit, foto-foto yang dikirimkan pengguna, dan fitur streetview sehingga menjadikan Google Maps lebih dari sekedar peta biasa. Google Maps adalah atlas interaktif atau sebuah cara untuk mengetahui tentang berbagai tempat dan orang-orang di seluruh dunia.

Baru-baru ini Google telah meluncurkan fitur baru yang dibenamkan pada Google Maps, Yaitu Maps GL. Menurut Google, mereka telah membuat ulang Google Maps dari awal. Maps yang disempurnakan ini memberikan kinerja yang lebih baik, grafis 3D yang lebih kaya, transisi halus antara citra, rotasi tampilan 45°, akses yang lebih mudah ke Street View, dan beberapa fitur lain.

Sumber :

https://id.wikipedia.org/wiki/Google_Maps

Membuat Aplikasi Location Based Services di Android Menggunakan Maps API v2

Down to Code

Oke, pertama-tama kita akan membuat tampilannya. Sama seperti di postingan sebelumnya, aplikasi ini akan mempunyai dua tampilan, yaitu tampilan Menu dan tampilan Maps yang akan menampilkan peta dan lokasi pengguna.

Oh ya, jika kalian menggunakan SDK Android terbaru, maka Main Activity yang ter-create akan mempunyai dua buah layout xml, yaitu layout untuk Activity tersebut dan layout untuk Fragment. Berikut ini adalah layout untuk Activity-nya :

activity_main.xml

<FrameLayout xmlns:android=”http://schemas.android.com/apk/res/android

xmlns:tools=”http://schemas.android.com/tools

android:id=”@+id/container”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

tools:context=”id.web.twoh.twohmaps.MainActivity”

tools:ignore=”MergeRootFrame” />

Dan ini adalah layout untuk fragment, berisi tombol-tombol navigasi, yaitu tombol Check-In, tombol Get Location, tombol About, dan tombol View On Map :

fragment_main.xml

<LinearLayout 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”

android:paddingBottom=”@dimen/activity_vertical_margin”

android:paddingLeft=”@dimen/activity_horizontal_margin”

android:paddingRight=”@dimen/activity_horizontal_margin”

android:paddingTop=”@dimen/activity_vertical_margin”

android:orientation=”vertical”

android:background=”@drawable/bg_main”

android:gravity=”center_horizontal|center_vertical”

tools:context=”id.web.twoh.twohmaps.MainActivity$PlaceholderFragment” >

 

<TextView

android:id=”@+id/NamaProgram”

android:text=”TWOH Maps v2″

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:textColor=”#ffffff”

android:textStyle=”bold”

/>

<Button

android:id=”@+id/btGetLocation”

android:text=”Get Location”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

/>

<Button

android:id=”@+id/btViewOnMap”

android:text=”View On Map”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

/>

<Button

android:id=”@+id/btCheckIn”

android:text=”Check In”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

/>

<Button

android:id=”@+id/btAbout”

android:text=”About”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

/>

 

</LinearLayout>

Kemudian untuk isi dari MainActivity nya sendiri adalah sebagai berikut :

package id.web.twoh.twohmaps;

 

import android.support.v7.app.ActionBarActivity;

import android.support.v4.app.Fragment;

import android.content.Context;

import android.content.Intent;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.Button;

import android.widget.Toast;

import id.web.twoh.twohmaps.R;

 

public class MainActivity extends ActionBarActivity {

 

protected LocationManager locationManager;

private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 10; // dalam Meters

private static final long MINIMUM_TIME_BETWEEN_UPDATES = 60000; // dalam Milliseconds

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

 

if (savedInstanceState == null) {

getSupportFragmentManager().beginTransaction()

.add(R.id.container, new PlaceholderFragment()).commit();

}

 

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

locationManager.requestLocationUpdates(

LocationManager.GPS_PROVIDER,

MINIMUM_TIME_BETWEEN_UPDATES,

MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,

new MyLocationListener()

);

}

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

 

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

 

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

 

protected void showCurrentLocation() {

Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

if (location != null) {

String message = String.format(

“Lokasi saat ini \n Longitude: %1$s \n Latitude: %2$s”,

location.getLongitude(), location.getLatitude()

);

Toast.makeText(this, message,

Toast.LENGTH_LONG).show();

}

 

}

 

private class MyLocationListener implements LocationListener {

 

public void onLocationChanged(Location location) {

String message = String.format(

“Deteksi Lokasi Baru \n Longitude: %1$s \n Latitude: %2$s”,

location.getLongitude(), location.getLatitude()

);

Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();

//switchToMap();

}

 

public void onStatusChanged(String s, int i, Bundle b) {

Toast.makeText(MainActivity.this, “Status provider berubah”,

Toast.LENGTH_LONG).show();

}

 

public void onProviderDisabled(String s) {

Toast.makeText(MainActivity.this,

“Provider dinonaktifkan oleh user, GPS off”,

Toast.LENGTH_LONG).show();

}

 

public void onProviderEnabled(String s) {

Toast.makeText(MainActivity.this,

“Provider diaktifkan oleh user, GPS on”,

Toast.LENGTH_LONG).show();

}

 

}

 

public static class PlaceholderFragment extends Fragment {

 

private Button btMaps;

private Button btCheckIn;

private Button btGetLocation;

Location location;

public PlaceholderFragment() {

}

 

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_main, container,

false);

btMaps = (Button)rootView.findViewById(R.id.btViewOnMap);

btMaps.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

switchToMap();

}

});

btCheckIn = (Button)rootView.findViewById(R.id.btCheckIn);

btCheckIn.setOnClickListener(new OnClickListener() {

 

@Override

public void onClick(View v) {

switchToCheckIn();

}

});

btGetLocation = (Button) rootView.findViewById(R.id.btGetLocation);

btGetLocation.setOnClickListener(new OnClickListener() {

 

@Override

public void onClick(View v) {

showCurrentLocation();

 

}

});

return rootView;

}

 

@Override

public void onActivityCreated(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

location = ((MainActivity)getActivity()).locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

if(location==null)

{

location = ((MainActivity)getActivity()).locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

}

}

 

private void switchToMap()

{

Intent i = new Intent(getActivity(), MapsActivity.class);

Bundle b = new Bundle();

if(location!=null)

{

b.putDouble(“longitude”, location.getLongitude());

b.putDouble(“latitude”, location.getLatitude());

Log.v(“info”, “The lat “+location.getLatitude());

Log.v(“info”, “The lng “+location.getLongitude());

i.putExtras(b);

startActivity(i);

}else

{

Toast.makeText(getActivity(), “Nyalakan lokasimu”, Toast.LENGTH_LONG).show();

}

}

 

public void switchToCheckIn()

{

 

//not yet implemented

}

 

protected void showCurrentLocation() {

if (location != null) {

String message = String.format(

“Lokasi saat ini \n Longitude: %1$s \n Latitude: %2$s”,

location.getLongitude(), location.getLatitude()

);

Toast.makeText(getActivity(), message,

Toast.LENGTH_LONG).show();

}

 

}

}

 

}

Kelas MainActivity.java berfungsi sebagai driver yang mengarahkan tombol-tombol di main menu ke activity yang sesuai. Perbedaan dengan aplikasi LBS sebelumnya, kelas ini diimplementasikan menggunakan arsitektur Fragment sehingga MainActivity sebenarnya hanyalah kelas container, dan fungsi-fungsi yang digunakan ada di dalam Fragment yang bernama “PlaceholderFragment”.

Selebihnya, kelas ini juga berfungsi untuk mendeteksi lokasi user, seperti di postingan LBS yang lama. Untuk bisa mendeteksi lokasi, pertama-tama kita harus menginstansiasi kelas Location Manager yang berfungsi untuk mengakses location services, location manager akan diturunkan dari kelas parent Context dan didapatkan lewat method getSystemService() . Kemudian kita meminta update lokasi dari perangkat menggunakan method requestLocationUpdates(), pada method itu kita akan menggunakan beberapa parameter, yaitu jenis provider layanan lokasi yang diinginkan (pada kasus ini adalah layanan GPS), kemudian interval minimum untuk pemberitahuan (dalam milisekon), jarak minimun untuk pemberitahuan (dalam meter), dan yang terakhir adalah sebuah kelas yang mengimplementasikan LocationListener. Location Listener seperti yang telah dijelaskan di atas, berfungsi untuk memantau perubahan pada lokasi pengguna dan juga perubahan pada status provider.

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 <img draggable=”false” class=”emoji” alt=”” src=”https://s.w.org/images/core/emoji/2.3/svg/1f642.svg“>

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 <img draggable=”false” class=”emoji” alt=”” src=”https://s.w.org/images/core/emoji/2.3/svg/1f642.svg“>

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.

https://www.twoh.co/2014/08/03/membuat-aplikasi-location-based-services-di-android-menggunakan-maps-api-v2/3/

 

LINK PPT : Location based services