Jumpa lagi dengan Agus Haryanto diseri tutorial Android, Pada tutorial sebelumnya kita telah mempelajari tentang
Pengenalan Google Map
di android, selanjutnya kita akan mengobati rasa penasaran kita
diakhir tutorial sebelumnya, sekarang mari kita belajar membuat marker
dan infowindow di google map android.
Sebelum melangkah lebih jauh saya coba jelaskan definisi dari marker dan infowindow
Marker, kalau anda pernah pakai google map dan coba search suatu lokasi tentunya anda akan melihat tanda balon merah kecil
pada map, nah itulah marker. untuk marker selain gambar balon merah
kecil, kita juga bisa menggunakan gambar lainnya, seperti misalnya untuk
menandakan lokasi suatu toko, kita bisa gunakan gambar yang
melambangkan toko.
Info Window, pada marker digoogle map cobalah and
klik, maka akan mucul popup windoww kecil yang berisi informasi nama
tempat tersebut dan alamatnya. pada infowindow informasinya tidak harus
nama dan alamat, tetapi juga bisa informasi lainnya.
Bagaimana sudah mengertikan apa itu marker dan infowindow ?
Sekarang kita kembali ke hobi kita coding. coding untuk membuat marker dan infowindow pada google map di android
1. Buka kembali project
Belajar GoogleMap yang kita buat pada tutorial sebelumnya.
2. Siapkan gambar marker
yang akan kita gunakan, taruh filenya directory
res/drawable, seperti telihat pada gambar dibawah
3. Buat Class baru dengan nama
MapsOverlay dengan super class
com.google.andorid.maps.ItemizedOverlay dan centang
Constructors from superclass
03 | import java.util.ArrayList; |
05 | import android.content.Context; |
06 | import android.graphics.drawable.Drawable; |
08 | import com.google.android.maps.ItemizedOverlay; |
09 | import com.google.android.maps.OverlayItem; |
11 | public class MapsOverlay extends ItemizedOverlay { |
12 | private ArrayList mOverlays = new ArrayList(); |
13 | private Context mContext ; |
14 | public MapsOverlay(Drawable defaultMarker) { |
15 | super (boundCenterBottom(defaultMarker)); |
19 | public MapsOverlay(Drawable defaultMarker, Context context) { |
20 | super (boundCenterBottom(defaultMarker)); |
24 | protected OverlayItem createItem( int i) { |
26 | return mOverlays.get(i); |
32 | return mOverlays.size(); |
36 | public void addOverlay(OverlayItem overlay) { |
37 | mOverlays.add(overlay); |
Pada class MapsOverlay inilah yang akan membantu menangani menggambar sesuatu diatas map.
4. Untuk menampilkan / menggambar marker dimap, buka kembali class TampilkanMap.java pada baris akhirnya tambahkan kode berikut
1 | List mapOverlays = mapView.getOverlays(); |
2 | Drawable drawable = this .getResources().getDrawable(R.drawable.marker); |
3 | MapsOverlay itemizedoverlay = new MapsOverlay(drawable, this ); |
4 | OverlayItem overlayitem = new OverlayItem(point, "Halo, Apa kabar!" , "I'm in Jakarta!" ); |
5 | itemizedoverlay.addOverlay(overlayitem); |
6 | mapOverlays.add(itemizedoverlay); |
sehingga code pada
TampilkanMap.java adalah sebagai berikut
05 | import com.google.android.maps.GeoPoint; |
06 | import com.google.android.maps.MapActivity; |
07 | import com.google.android.maps.MapView; |
08 | import com.google.android.maps.Overlay; |
09 | import com.google.android.maps.OverlayItem; |
11 | import android.graphics.drawable.Drawable; |
12 | import android.os.Bundle; |
14 | public class TampilkanMap extends MapActivity |
16 | /** Called when the activity is first created. */ |
18 | public void onCreate(Bundle savedInstanceState) |
20 | super .onCreate(savedInstanceState); |
21 | setContentView(R.layout.main); |
23 | MapView mapView = (MapView) findViewById(R.id.mapView); |
24 | mapView.setBuiltInZoomControls( true ); |
25 | double lat = - 6.2532592788520005 ; |
26 | double lng = 106.853239291777 ; |
27 | GeoPoint point = new GeoPoint(( int ) (lat *1E6),( int ) (lng * 1E6)); |
28 | mapView.getController().animateTo(point); |
29 | mapView.getController().setZoom( 15 ); |
30 | List mapOverlays = mapView.getOverlays(); |
31 | Drawable drawable = this .getResources().getDrawable(R.drawable.marker); |
32 | MapsOverlay itemizedoverlay = new MapsOverlay(drawable, this ); |
33 | OverlayItem overlayitem = new OverlayItem(point, "Halo, Apa Kabar!" , "I'm in Jakarta!" ); |
34 | itemizedoverlay.addOverlay(overlayitem); |
35 | mapOverlays.add(itemizedoverlay); |
39 | protected boolean isRouteDisplayed() { |
Kemudian kita run project, hasilnya marker terlihat ada ditengah layar.
Marker sudah berhasil ditampilkan selanjutnya yang ingin kita buat adalah apabila marker diklik
maka akan muncul info window yang berisi informasi dari marker tersebut.
5. Buka kembali class MapsOverlay.java, tambahkan satu method untuk menangkap marker yang diklik
dan menampilkan informasi dari marker tersebut dalam bentuk dialog window
02 | protected boolean onTap( int index) { |
03 | OverlayItem item = mOverlays.get(index); |
04 | AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); |
05 | dialog.setTitle(item.getTitle()); |
06 | dialog.setMessage(item.getSnippet()); |
07 | dialog.setPositiveButton( "Close" , new OnClickListener() { |
09 | public void onClick(DialogInterface arg0, int arg1) { |
Kode lengkap untuk MapsOverlay.java adalah :
03 | import java.util.ArrayList; |
05 | import android.app.AlertDialog; |
06 | import android.content.Context; |
07 | import android.content.DialogInterface; |
08 | import android.content.DialogInterface.OnClickListener; |
09 | import android.graphics.drawable.Drawable; |
10 | import android.widget.Toast; |
12 | import com.google.android.maps.ItemizedOverlay; |
13 | import com.google.android.maps.OverlayItem; |
15 | public class MapsOverlay extends ItemizedOverlay { |
16 | private ArrayList mOverlays = new ArrayList(); |
17 | private Context mContext ; |
18 | public MapsOverlay(Drawable defaultMarker) { |
19 | super (boundCenterBottom(defaultMarker)); |
24 | public MapsOverlay(Drawable defaultMarker, Context context) { |
25 | super (boundCenterBottom(defaultMarker)); |
29 | protected OverlayItem createItem( int i) { |
31 | return mOverlays.get(i); |
37 | return mOverlays.size(); |
41 | public void addOverlay(OverlayItem overlay) { |
42 | mOverlays.add(overlay); |
47 | protected boolean onTap( int index) { |
48 | OverlayItem item = mOverlays.get(index); |
49 | AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); |
50 | dialog.setTitle(item.getTitle()); |
51 | dialog.setMessage(item.getSnippet()); |
52 | dialog.setPositiveButton( "Close" , new OnClickListener() { |
54 | public void onClick(DialogInterface arg0, int arg1) { |
Mari kita run lagi projectnya dan klik
markernya,maka akan muncul i
nfowindownya
Mudahkan membuat marker dengan infowindownya digoogle map.
Contoh diataskan cuma satu marker, bagaiaman juga kita ingin menambah marker yang tampil.
Tenang kode yang kita buat diatas sudah support untuk itu.
Buka kembali class TampilkanMap.java sebelum code mapOverlays.add(itemizedoverlay);
tambahkan code ini (koordinat baru yang akan diberi marker)
1 | lat = - 6.2432592788520005 ; |
3 | point = new GeoPoint(( int ) (lat *1E6),( int ) (lng * 1E6)); |
4 | overlayitem = new OverlayItem(point, "Halo, Juga!" , "Saya di jakarta juga!" ); |
5 | itemizedoverlay.addOverlay(overlayitem); |
Kalau kita run project kita hasilnya
Setelah belajar tutorial ini diharapkan para pembaca dapat membuat aplikasi android yang memanfaatkan
GPS dan Google Map.
Kita sudah bisa membuat menu diandroid, sudah bisa menangkap nilai kooordinat dari GPS
sudah bisa menggunakan Google Map diandroid ,dengan ini seharusnya kita sudah bisa membuat
aplikasi yang keren, misalnya kita buat aplikasi diandorid yang isinya
data universitas se Indonesia lengkap dengan mapnya.
Saat ini sedang ada festival dan kompetisi mobile application android ayo ikutan
Referensi :
http://developer.android.com/
http://mobiforge.com/developing/story/using-google-maps-android
Jika baru mulai belajar android dianjurkan untuk membaca tutorial
Aplikasi Android Sederhana - Menghitung Luas Persegi Panjang
Share this
EmoticonEmoticon