Dulu
kita pernah membuat Aplikasi Rute Direction di Google Map Android
tetapi masih Versi 1. Sekarang kita coba mempelajari Cara Membuat
Aplikasi GoogleMap V2 dengan Fasilitas Rute Direction dari suatu titik,
dalam hal ini adalah Marker yang sudah kita buat, menuju lokasi GPS
tempat kita berada yang ditunjukkan oleh fasilitas MyLocation pada
GoogleMap V2.
Sebagai pengantar bagi yang belum pernah membuat
Aplikasi Peta GoogleMap Versi 2 sebaiknya Membaca dahulu Artikel Ini.
Berdasarkan project dari Artikel tersebut, sekarang kita tambahkan
Fasilitas Rute. Untuk mudahnya dalam pembuatan, sebenarnya fasilitas
rute ini ditampilkan dengan cara Aplikasi buatan kita memanggil Aplikasi
lain yang memiliki fasilitas Route Direction bisa Maps milik Google
Android atau Aplikasi Web Maps.Google.com, Membuat Garis Rute Direction
Sendiri di Atas Peta GoogleMap kita sebenarnya bisa, tetapi terlalu
sulit, dan lama, harus memparsing informasi Direction dari Google Map,
mungkin lain kali ^_^.
Langsung kita mulai dengan membuat Project baru, jangan lupa tipenya
harus tipe platform Google API. Kemudian tambahkan kode program berikut
ini pada MainActivity.java :
package com.amijaya.googlemapv2;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
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.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.Menu;
import android.widget.Toast;
//http://cariprogram.blogspot.com
//nuramijaya@gmail.com
public class MainActivity extends FragmentActivity {
final int RQS_GooglePlayServices = 1;
private GoogleMap myMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager myFragmentManager = getSupportFragmentManager();
SupportMapFragment mySupportMapFragment = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
myMap = mySupportMapFragment.getMap();
LatLng jogja = new LatLng(-7.782939, 110.367050);
MarkerOptions markerJogja = new MarkerOptions();
markerJogja.position(jogja);
markerJogja.title("Tugu Yogyakarta");
markerJogja.snippet("Tugu Pusat Kota Yogyakarta");
markerJogja.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
myMap.addMarker(markerJogja);
LatLng amplaz = new LatLng(-7.783130530640776, 110.40135302698059);
MarkerOptions markerAmplaz = new MarkerOptions();
markerAmplaz.position(amplaz);
markerAmplaz.title("Ambarrukmo Plaza");
markerAmplaz.snippet("Ambarrukmo Plaza Yogyakarta");
markerAmplaz.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
myMap.addMarker(markerAmplaz);
myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
myMap.getUiSettings().setCompassEnabled(true);
myMap.getUiSettings().setZoomControlsEnabled(true);
myMap.getUiSettings().setMyLocationButtonEnabled(true);
myMap.setMyLocationEnabled(true);
myMap.animateCamera(CameraUpdateFactory.newLatLngZoom(jogja, 15));
myMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
try {
StringBuilder urlString = new StringBuilder();
String daddr = (String.valueOf(arg0.getPosition().latitude)+","+String.valueOf(arg0.getPosition().longitude));
urlString.append("http://maps.google.com/maps?f=d&hl=en");
urlString.append("&saddr="+String.valueOf(myMap.getMyLocation().getLatitude())+","+String.valueOf(myMap.getMyLocation().getLongitude()));
urlString.append("&daddr="+daddr);
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString.toString()));
startActivity(i);
} catch (Exception ee) {
Toast.makeText(getApplicationContext(), "Lokasi Saat Ini Belum Didapatkan, Coba Nyalakan GPS, Keluar Ruangan dan Tunggu Beberapa Saat", Toast.LENGTH_LONG).show();
}
return false;
}
});
myMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker arg0) {
// TODO Auto-generated method stub
//JIKA KLIKNYA INGIN DI INFO WINDOW
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Setelah itu buat layout di activity_main.xml sebagai berikut :
<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"
tools:context=".MainActivity" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"
/>
</RelativeLayout>
Untuk AndroidManifest.xml kita setting seperti ini, ingat untuk
mengganti Google Map Key dengan milik anda sendiri agar sesuai dengan
SDK di komputer anda. Jika belum mengerti silakan membaca
artikel sebelumnya:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amijaya.googlemapv2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"/>
<permission
android:name="com.amijaya.googlemapv2.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<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" />
<uses-feature android:glEsVersion="0x00020000"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIz-Google-APi-Key-Anda" />
<activity
android:name="com.amijaya.googlemapv2.MainActivity"
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>
</manifest>
Jangan lupa hidupkan GPS dan Internet, tunggu beberapa saat sampai
mendapatkan sinyal GPS, jika belum mendapatkan tetapi sudah diklik
markernya hasilnya seperti ini :
Sedangkan setelah mendapatkan Sinyal GPS dan diklik salah satu Marker
hasilnya keluar pilihan Route Direction mau ditampilkan di Aplikasi Maps
atau Web Browser :
Jika kita memilih Aplikasi Maps :
Jika Memilih Browser Web akan membuka Web Maps.Google.com :
Jangan lupa lokasi Marker di aplikasi ini ada di Yogyakarta jadi
hati-hati jika misalnya anda ada di Jakarta, bisa-bisa yang muncul
adalah Direction Route yang sangat panjang yang menampilkan jalan dari
Jakarta ke Yogyakarta :) Edit dahulu Latitude dan Longitude dari
Marker-markernya dengan lokasi yang dekat dengan posisi anda, gunakan
Maps.Google.com untuk mencari latitude longitude atau dengan web seperti
mapjogja.com yang dapat menampilkan Latitude-Longitude jika marker digeser.