Wah susah juga mendapatkan judul yang tepat untuk artikel ini. Intinya, kadang penulis membuat aplikasi Android untuk mendapatkan Latitude dan Longitude dari GPS agar bisa digunakan atau disimpan pada Database. Tetapi bagaimana jika pengguna Aplikasi tidak harus berada di tempat yang ingin diketahui/dicatat Latitude Longitude nya.
Tentu saja harapannya dengan Klik atau Tap langsung di Google Map akan bisa mendapatkan Latitide dan Longitude nya. Pada Google Map Android Versi 2 Cukup Mudah, Kita Bahas Lain Kali pada Artikel yang Lain. Kali ini kita buat Aplikasi tersebut pada Google Map Android Versi 1 dahulu.
Caranya, buat aplikasi Android dengan Platform Google API seperti biasa. Buat Main Activity seperti berikut :
package com.amijaya.androidgooglemaptapgetlatlng;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
//http://cariprogram.blogspot.com
//nuramijaya@gmail.com
public class MainActivity extends MapActivity {
MapView mapView;
long startTime;
long endTime;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView)findViewById(R.id.mapView);
double lat = -7.782939;
double lng = 110.36705000000006;
GeoPoint point = new GeoPoint((int) (lat *1E6),(int) (lng * 1E6));
mapView.getController().animateTo(point);
mapView.getController().setZoom(15);
mapView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
/*//jika ingin touch saja lgs muncul, bukan long touch (long press)
GeoPoint p = null;
if (event.getAction() == MotionEvent.ACTION_UP) {
p = mapView.getProjection().fromPixels((int) event.getX(),
(int) event.getY());
//mapBackButton.setText(p.getLatitudeE6() / 1E6 + ","
// + p.getLongitudeE6() / 1E6 + "Action is : "
// + event.getAction());
Toast.makeText(
getBaseContext(),
p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6()
/ 1E6 + "Action is : " + event.getAction(),
Toast.LENGTH_SHORT).show();
return true;
}
*/
if(event.getAction() == MotionEvent.ACTION_DOWN){
//record the start time
startTime = event.getEventTime();
}else if(event.getAction() == MotionEvent.ACTION_UP){
//record the end time
endTime = event.getEventTime();
}
//verify
if(endTime - startTime > 1000){
//we have a 1000ms duration touch
//propagate your own event
GeoPoint p = null;
if (event.getAction() == MotionEvent.ACTION_UP) {
p = mapView.getProjection().fromPixels((int) event.getX(),
(int) event.getY());
Toast.makeText(
getBaseContext(),
p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6()
/ 1E6 + "Action is : " + event.getAction(),
Toast.LENGTH_SHORT).show();
return true;
}
return true; //notify that you handled this event (do not propagate)
}
return false;
}
});
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
/*//seharusnya betul tapi tidak jalan
*
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_DOWN){
//record the start time
startTime = ev.getEventTime();
}else if(ev.getAction() == MotionEvent.ACTION_UP){
//record the end time
endTime = ev.getEventTime();
}
//verify
if(endTime - startTime > 1000){
//we have a 1000ms duration touch
//propagate your own event
GeoPoint p = null;
p = mapView.getProjection().fromPixels((int) ev.getX(),
(int) ev.getY());
Toast.makeText(
getBaseContext(),
p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6()
/ 1E6 + " Event : " + ev.getAction(),
Toast.LENGTH_LONG).show();
return true; //notify that you handled this event (do not propagate)
}
return false;
}
*/
}
Kemudian buat Halaman Utama main.xml seperti ini :
<?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="0q1s--GANTI-DGN-API-KEY-ANDA--EpA"
/>
</RelativeLayout>
Jangan lupa AndroidManifest disesuaikan agar bisa memanggil library Google Map dan Memiliki Permission INTERNET seperti ini :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amijaya.androidgooglemaptapgetlatlng"
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=".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>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
Hasilnya ketika diklik pada Peta :
Project Selengkapnya silakan Didownload Disini. Pada Google Drive Klik File-Download
Semoga Bermanfaat.