Android sebagai “pemain” baru dalam dunia smartphone kini sudah berkembang demikian cepat. Hingga saat ini sudah memasuki versi Android 2.3. Hal ini tidak terlepas dari peran geeks yang memanfaatkan OS ini untuk dikembangkan lebih lanjut karena sifatnya yang open source. Jika pada artikel sebelumnya kita telah membahas bagaimana instalasi Android emulator pada desktop, serta instalasi aplikasi yang sudah ada untuk Android, sekarang kita akan mencoba membuat sebuah aplikasi Map sederhana menggunakan Android emulator.
Aplikasi Map sederhana ini akan kita sambungkan dengan Google Map, jadi jangan lupa koneksi internet ya..

1. Pembuatan Project Baru

Mari kita mulai dengan membuat project baru ketentuan sebagai berikut,
  1. Klik File > New lalu pilih Android Project
  2. Klik Next lalu isikan field-field yang tersedia dengan ketentua sebagai beriktu
  • Project Name : Nama Project yang akan kita buat.
Project Name : My First Map
  • Built Target : Target aplikasi yang akan digunakan untuk menjalankan aplikasi.
Built Target : Kita pilih Google APIs dengan Platform 1.6
  • Application Name : Nama aplikasi yang akan dibuat.
Application Name : My First Map
  • Package Name : Nama paket yang mengacu pada standar penamaan aplikasi java.
Package Name : biz.multimediacenter.myfirstmap
  • Create Activity : Nama aktiviti.
Create Activity : MyFirstMap
  • Min SDK Version : Versi dari Android SDK yang digunakan.
Min SDK Version : 4

2. Pembuatan AVD

  1. Klik Window > Android SDK and AVD Manager
  2. Klik New
  3. Isikan field-field yang tersedia dengan ketentuan sebagai berikut,
  • Name : Nama AVD
Name : AVDapi
  • Target : Target untuk menjalankan aplikasi
Target : Google APIs(Google Inc.)-API Level 4
  • SD Card Size : Kapasitas memori yang akan digunakan
SD Card Size : 100 MB
  • Skin : Jenis layar
Skin : Default (HVGA)
  • Hardware : Perangkat keras yang dibutuhkan
Hardware : Abstracted LCD density

3. Key API

  1. Cari lokasi folder key-nya, biasanya terletak pada C:\Document and Settings\<user login>\.android\debug.keystore
  2. Copy file debug.keystore ke sebuah lokasi yang mudah dijangkau, misalkan di folder data di drive D.
  3. Cara membuka debug.keystore dapat melalui DOS dengan melalui Start > Run > CMD
  4. Kemudian cari dimana kita menempatkan JDK\bin kita, misal pada C:\Program Files\jdk 1.6.0_16\bin
  5. Setelah berada pada lokasi yang benar maka perintah yang kita gunakan adalah : keytool –list –alias androiddebugkey –keystore D:\data\debug.keystore –storepass android –keypass android
  6. Setelah itu masuk ke masuk ke alamat http://code.google.com/android/add-ons/google-apis/maps-api-signup.html untuk mendaftarkan key Certificate fingerprint kita.
  7. Masukkan key Certificate fingerprint pada My Certicate’s MD5 fingerprint :
  8. Setelah itu kita akan mendapatkan API Key Google Map

4. Koneksi Google Map

Dalam pembuatan aplikasi peta sederhana ini, kita menggunakan fasilitas Google Map yang dikembangkan oleh Google Inc. Jadi untuk dapat menggunakannya maka di dalam pembuatannya kita sisipkan perintah yang akan menghubungkan aplikasi kita dengan Google Map. Dalam hal ini kita tambahkan
  1. com.google.android.maps.MapViewandroid:id”@+id/map”
  2. android:apikey=”<API KEY>”
sehingga pada file main.xml akan menjadi seperti di bawah 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/map”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:apiKey=”0N7Hy8N-J4GRSHu6EBqBPNNmCZIGnxFWaJyCLAQ”
android:clickable=”true” />

<LinearLayout android:id=”@+id/zoom”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentBottom=”true”
android:layout_alignParentLeft=”true” >
</RelativeLayout>
Sedangkan untuk koneksi dengan internet, kita haru menambahkan permission dan library pada file AndroidManifest.xml, yaitu:
  1. Permission INTERNET dan ACCESS_COARSE_LOCATION
  2. Pada elemen <application>, tambahkan elemen <uses-library> dengan android:name= ”com.google.android.maps”, sebagai tanda untuk menggunakan Android API
Sehingga file AndroidManifest.xml secara menjadi seperti ini:
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”biz.multimediacenter.myfirstmap”
android:versionCode=”1″
android:versionName=”1.0″>

<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION” />
<application android:icon=”@drawable/icon” android:label=”@string/app_name”>
<uses-library android:name=”com.google.android.maps” />
<activity android:name=”.MyFirstMap”
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=”4″ />

</manifest>

5. Fasilitas Zoom

Fasilitas zoom sangat diperlukan pada aplikasi peta digital untuk mengetahui lebih detail tempat yang ingin dilihat. Di dalam Android, kita bisa mengontrol secara langsung level zoom melalui method setzoom() pada getMapController(). Nilai ini menggunakan angka integer, diamana 1 (satu) akan memperlihatkan peta dunia secara keseluruhan, dan 21 (dua puluh satu) adalah level terdekat yang bisa kita dapatkan.
Setiap  level merupakan kelipatan dari efektif resolusi layer, level 1 (satu) sama dengan 256 pixel, sedangkan level 21 (dua puluh satu) sama dengan 268,435,456 pixel. Layar handphone tentu tidak sebesar itu, sehingga menggunakan level 16 (enam belas) untuk melihat peta seukuran beberapa blok pada sebuah lokasi.
Untuk membuat aplikasi memiliki zoom level, kita membutuhkan beberapa hal:
  1. Kita menentukan tempat untuk menempatkan kontrol zoom, dan kita bisa mengesetnya hanya terhlihat ketika kita membutuhkan. Misal kita tempatkan overlay di atas peta, pada pojok kiri bawah layar. Kita menggunakan LinearLayout atau kontainer sederhana untuk kontol zoom layout kita.
  2. Pada Activity method onCreate(), kita bisa mendapatkan kontrol zoom kontainer melalui findViewById().
  3. Tambahkan hasil dari map.getZoomControl() pada kontainer.
Sebagai contoh, ini baris kode dari method onCreate(), yang dimaksud sebelumnya:
ViewGroup zom=(ViewGroup) findViewById (R.id.zoom);
Zoom.addView(map.getZoomControl());
Kemudian kita dapat memanggil kontrol zoom agar terlihat dengan memanggil displayZoomControl() pada mapView kita, atau bisa juga secara otomatis terlhiat ketika penggunanya menyentuh layar.
Biasanya kita akan butuh untuk mengontrol peta, selain level zoom, misal lokasi pengguna pada aplikasi semacam where I am, atau lokasi-lokasi tertentu yang kita inginkan, ini akan memerlukan GeoPoint sebagai parameter lokasi tersebut. GeoPoint sebagai parameter lokasi tersebut. GeoPoint merupakan titik alamat dari lokasi, yaitu Latitude dan Longtitude, yang direpresentasikan ke dala deretan angka integer. Dan untuk mengubah posisi map kita bisa memanggil setCenter() pada mapController.

6. GeoPoint

Untuk mendapatkan GeoPoint salah satunya bisa melihat pada Google Maps. Misalkan kita menujut ke Indonesia. Dan disini kita akan mengambil GeoPoint untuk kota Depok dengan titik Universitas Gunadarma. Klik kanan, lalu pilih What’s here?
Sehingga pada jendela sebelah kiri akan muncul angka GeoPoint dari titik tersebut, atau pada field searching. Untuk Universitas Gunadarma kita mendapatkan GeoPoint dengan deretan angka integer, -6.36806,106.833029

7. Rugged Terrain

Seperti juga Google Maps pada komputer yang bisa memperlihatkan image peta terrain dari satellite, Android map juga bisa melakukan hal seperti itu.
Dengan menggunakan method toggleSatellite() pada MapView, kita bisa melihat peta perspektif dari satellite yaitu terrain. Kita bisa membuat triggernya dari menu ataupun dari keypad. Contoh penggunaan keypad yaitu dengan mengeset untuk berpindah mode peta terrain dari satellite pada keypad S, dan untuk menampilkan zoom kontrol pada keypad
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_S) {
map.setSatellite(!map.isSatellite());
return(true);
}
else if (keyCode == KeyEvent.KEYCODE_Z) {
map.displayZoomControls(true);
return(true);
}

8. Push Pin

Ketika kita menggunakan Google Maps, kita mungkin pernah menggunakan atau melihat sesuatu di atas peta, seperti “push-pins” yang menandakan suatu tempat. Dimana sebenarnya push pin tersebut terpisah dari peta, dia memiliki layer sendiri, diatas layer peta. Android map juga menyediakan fasilitas layering inim sehingga kita bisa menandai peta dengan push pin sesuai yang diinginkan.
Setiap overlay yang ingin kita tambahkan pada peta, harus diimplementasikan sebagai subkelas dari Ovelay. Terdapat sebuah subkelas ItemizedOverlay ketika kita ingin melihat semacam push pin atau sejenisnya dan ItemizedOverlay memudahkan proses itu.
Untuk menetapkan kelas overlay pada peta, kita bisa memanggil getOverlays() pada MapView kita, dan gunakan add() sebagai instance dari Overlay:
marker.setBounds(0,0, marker.getIntrinsicWidth(),marker.getIntrinsicHeight());
map.getOverlays().add(new SitesOverlay(marker));

9. Touch Screen

Subkelas Overlay juga mengimplementasikan method onTap(), yang akan menangani sentuhan pada layar seperti pada Google Maps, mengklik pada push pin akan mentriger sebuah balon pop up informasi mengenai lokasi. Dengan onTap(), kita dapat melakukan hal yang sama pada Android.
@Override
protected boolean onTap(int i) {
Toast.makeText(MyFirstMap.this,
items.get(i).getSnippet(),
Toast.LENGTH_SHORT).show();
return(true);
}
Android memiliki built-in overlay untuk menghandle dua skenario keadaan:
  1. Menunjukkan dimana kita pada peta, berdasarkan GPS atau lokasi lain yang disediakan
  2. Menunjukkan titik dimana kita ditetapkan, berdasarkan pada built-in sensor kompas apabila tersedia.
Yang harus kita lakukan adalah membuat instance dari MyLocationOverlay(), tambahkan pada daftar MapViews dari overlay, dan mengeset pada enable atau disable fitur ini pada waktu yang ditentukan. Dinama waktu ini didasarkan pada umur penggunaan batttery, tidak perlu meng-update lokasi atau arah ketika activity di pause, untuk itu direkomendasikan kita meng-enable fitur ini dengan onResume() dan disable dengan onPause().
Disini kita memberikan penanda (marker) pada titik-titik GeoPoint yang kita masukkan koordinatnya ke dalam peta kita. Yaitu dengan membuat objek gambar kecil, dengan menggunakan formatpng, dan kita manamakannya marker.png. untuk membuatnya bisa menggunakan pengolah gambar yang kita kuasai, dengan ukuran 22×23 pixel kemudian copy ke folder res/drawable-mdpi/marker.png

10. Tampilan

  • Tampilan Satelit

  • Tampilan Peta

Download Code