Selamat pagi adik-adik mahasiswa yang ganteng-ganteng dan cantik-cantik serta dengan semangat muda yang menggelora ingin maju dan berprestasi. Yang lagi skripsi ayo tetap semangat menyelesaikannya, konsultasi dengan dosen dan teman jika ada masalah. Jumpa lagi dengan agus haryanto, Seperti yang saya sampaikan pada tutorial sebelumnya bahwa agusharyanto.net akan menyajikan tutorial android untuk menampilkan alamat dari sebuah marker yang ada di peta.
Dulu ingat waktu SMP ada pelajaran Geografi nah disitu kita suka deg-degan kalau gurunya bawa peta besar ke kelas. Dalam hati wah peta buta nih, wah bisa malu nih kalau nggak bisa ditanyain yang ditunjuk guru di peta itu daerah apa. Kalau sekarang tinggal buka HP Android jalanin aplikasi yang ada fitur mencari alamat berdasarkan koordinat daat deh nama daerahnya.
Oke kembali ke materi utama yaitu menampilkan alamat berdasrkan posisi koordinat user (Current Location).
Mari buka eclipse dengan semangat lalu lakukan langkah berikut
1. Buka lagi project PetaLokasi
2. Buka class DisplayCurrentLocActivity.java lalu ketikan kode berikut
package net.agusharyanto.petalokasi; import java.io.IOException; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.util.Log; import android.widget.Toast; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; 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; public class DisplayCurrentLocActivity extends FragmentActivity { GoogleMap googlemap; MarkerOptions markerOptions; LatLng latLng; LatLng prevLatLng = null; Marker marker = null; ArrayList<LatLng> arrline = new ArrayList<LatLng>(); private LocationManager locManager; private LocationListener locListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.current_loc); FragmentManager fragmentManager = getSupportFragmentManager(); SupportMapFragment supportMapFragment = (SupportMapFragment) fragmentManager .findFragmentById(R.id.mapcurrloc); // Getting a reference to the map googlemap = supportMapFragment.getMap(); initLocationManager(); } /** * 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) { displayCurrentLoctoMap(newLocation); } public void onProviderDisabled(String arg0) { } public void onProviderEnabled(String arg0) { Location location = locManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); displayCurrentLoctoMap(location); } public void onStatusChanged(String arg0, int arg1, Bundle arg2) { } }; locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener); Location location = locManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); displayCurrentLoctoMap(location); } /** * This method will be called when current position changed is submitted via * the GPS. * * @param newLocation */ protected void displayCurrentLoctoMap(Location newLocation) { try { LatLng currlok = new LatLng(newLocation.getLatitude(), newLocation.getLongitude()); if (marker != null) marker.remove(); markerOptions = new MarkerOptions().position(currlok) .title("Current Location") .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)); googlemap.moveCamera(CameraUpdateFactory.newLatLngZoom(currlok, 15)); // call and execute ReversGeocoding Task new ReverseGeocodingTask(getBaseContext()).execute(currlok); } catch (NullPointerException e) { Toast.makeText(DisplayCurrentLocActivity.this,"Can't get gps location, make sure your gps is enable",Toast.LENGTH_LONG).show(); } } private class ReverseGeocodingTask extends AsyncTask<LatLng, Void, String>{ Context mContext; public ReverseGeocodingTask(Context context){ super(); mContext = context; } // Finding address using reverse geocoding @Override protected String doInBackground(LatLng... params) { Geocoder geocoder = new Geocoder(mContext); double latitude = params[0].latitude; double longitude = params[0].longitude; List<Address> addresses = null; String addressText=""; try { addresses = geocoder.getFromLocation(latitude, longitude,1); } catch (IOException e) { e.printStackTrace(); } if(addresses != null && addresses.size() > 0 ){ Address address = addresses.get(0); addressText = String.format("%s, %s, %s", address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "", address.getLocality(), address.getCountryName()); } return addressText; } @Override protected void onPostExecute(String addressText) { // Setting the snippet for the marker. // This will be displayed on taping the marker Log.d("TAG","Alamat:"+addressText); markerOptions.snippet(addressText); marker = googlemap.addMarker(markerOptions); } } }
Otak dari pengkonversi koordinat menjadi alamat ini adalah inner class ReverseGeocodingTask dimana didalamnya ada method doInBackground didalam method inilah proses konversi dari koordinat ke alamat dilakukan kalau istilah kerennya Reverse GeoCoder.
3. Sekarang mari kita run Aplikasi, setelah marker muncul dipeta tap marker tersebut maka akan muncul keterangan alamatnya.
Kebetulan saya lagi ada dirumah. Jadi yang muncul adalah alamat rumah saya. Dan harus angkat topi untuk google karena hasil alamatnya sesuai dengan alamat rumah saya.
Tetaplah semangat adik-adiku mahasiswa yang smart
Semoga bermanfaat
Salam hangat
Agus Haryanto
bang
gmn cara nentuin loglat nya kalo jalan(ahmad yani) misalkan
kan jalan itu panjang bang
makasih
Assalamu alaikum bang,,
bang kalo di hubungkan dengan alat deteksi pencari sepeti sensor letak,, seperti ingin mengetahui kendaraan yang ditaroh sensor dan ingin melihat kendaraan berada dimana pake android itu gimana ya mas scriptnya.,
tolong masukan dari abang,,
terima kasih .
wassalamu alaikum ,,,
mas, ini saya Hans yang waktu itu tertarik dengan topik ini.(spring board event)
Terima kasih mas atas tutorialnya sangat membantu sekali.
@Hans, Sama-sama. Terus semangat.
Pak agus punya saya kok gk bisa nampilkan alamat dari GPS ??? GPS di hp sudah on dan sinyal juga sudah 3G
itu pake eclipse ta gan ?
eh sori gan, baru baca kalo pake eclipse
itu nge runnya pake emulator ?
belajar android itu eclipsnya pake eclips apa ya ?
baru mau belajar android.
@ikhsan, coba cek disini http://www.slideshare.net/agusslideshare/langkahlangkah-instalasi-software-untuk-develop-aplikasi-android selamat koding
Itu kok semua fungsi import com.google.android.gms malah error? Padahal saya juga udah include Google APIs di project saya
Permisi mas agus… saya mau tnaya … ini saya coba tp ko getFromLocationnya null trs ya mas?