Sebagai lanjutan dari post sebelumnya yaitu Membuat Aplikasi Google Map Kita Sendiri. Di sini akan dilanjutkan membuat tutorial tentang menambahkan marker dan mencoba dialog. Langsung aja deh 😉
Sebelumnya siapkan eclipse dan emulatornya.
Tambahkan file CustomItemizedOverlay.java pada package com.iddev.googlemap :
package com.iddev.googlemap;
import java.util.ArrayList;
import android.graphics.drawable.Drawable;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;
public class CustomItemizedOverlay extends ItemizedOverlay {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private MainActivity mainActivity;
public CustomItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public CustomItemizedOverlay(Drawable defaultMarker, MainActivity mainActivity) {
super(boundCenterBottom(defaultMarker));
this.mainActivity = mainActivity;
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
@Override
protected boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
return true;
}
}
Jika sudah, sekarang kita unduh dulu markernya dari sini. Kemudian extract dan masukan salah satu saja, misalnya bank.png. Cukup copy-paste ke dalam folder drawable yang ada di dalam folder res.
marker bank
Oke, sekarang kita tambahkan beberapa coding sehingga pada MainActivity.java berubah menjadi seperti ini :
package com.iddev.googlemap;
import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
public class MainActivity extends MapActivity {
public MapView mapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
// set posisi tengah dari map
MapController mapController = mapView.getController();
mapController.setCenter(new GeoPoint(-7298115, 112739451));
mapController.setZoom(12);
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.bank);
CustomItemizedOverlay itemizedoverlay = new CustomItemizedOverlay(drawable);
GeoPoint point = new GeoPoint(-7298115, 112739451);
OverlayItem overlayitem = new OverlayItem(point, "Ini adalah Judul", "Ini adalah keterangan");
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
Sekarang kita jalankan dengan emulatornya.
hasil akhir
Sudah jadi kan 🙂
Sekarang akan saya jelaskan maksud dari coding di atas untuk penambahan marker.
List<Overlay> mapOverlays = mapView.getOverlays();
Digunakan untuk mengambil seluruh overlay yang ada pada google map. Apaan sih overlay itu ? Overlay itu semacam layer atau tumpukan di atas peta google map. Overlay bisa berbagai macam jenis, antara lain polyline, polygon, marker.
Drawable drawable = this.getResources().getDrawable(R.drawable.bank);
Kode ini digunakan untuk mengubah alamat pointer dari file bank.png menjadi tipe drawable. Karena tipe drawable merupakan class yang bisa digambar di aplikasi. Intinya me-load file tersebut.
CustomItemizedOverlay itemizedoverlay = new CustomItemizedOverlay(drawable);
melakukan inisialisasi itemizedOverlay, di sini gambar bank tadi dimasukkan ke dalam objek CustomItemizedOverlay yang kita buat. Class CustomItemizedOverlay digunakan agar objek dapat masuk ke dalam overlay-nya google map.
GeoPoint point = new GeoPoint(-7298115, 112739451);
Nah, kalo ini sudah pasti kita tahu kalau ini menentukan posisi dari marker untuk berada di Surabaya. 🙂
OverlayItem overlayitem = new OverlayItem(point, “Ini adalah Judul”, “Ini adalah keterangan”);
Kalo ini mendefinisikan bahwa variabel point tadi dimasukkan ke dalam overlayitem, sehingga isi dari overlay item adalah lokasi, judul, dan keterangan.
itemizedoverlay.addOverlay(overlayitem);
Ini apaan sih ? nggak, kita cuma memasukkan overlayitem ke dalam itemizedoverlay. Jadi yang awalnya itemizedoverlay cuma memiliki marker di dalamnya, kini memiliki koordinat lintang dan bujur (longitude & latitude).
mapOverlays.add(itemizedoverlay);
Nah, ini yang penting. itemizedoverlay merupakan sebuah marker, jadi kalo ingin memasukkan ke dalam google map, tinggal menambahkannya ke dalam mapOverlay.