Jumat, 28 Maret 2014

Cara Membuat Aplikasi GPS pada Android Menggunakan Google Maps

Google Maps adalah salah satu dari banyak paket aplikasi dengan platform Android. Selain hanya menggunakan aplikasi Maps, Anda juga dapat menanamkan ke dalam aplikasi Anda sendiri dan membuatnya melakukan beberapa hal yang sangat keren. Pada artikel ini, saya akan menunjukkan cara menggunakan Google Maps dalam aplikasi Android Anda dan bagaimana pemrograman melakukan hal berikut:

  • Mengubah pandangan Google Maps 
  • Mendapatkan garis lintang dan bujur lokasi di Google Maps
Membuat Proyek
Menggunakan Eclipse, membuat proyek dan nama GoogleMaps Android baru seperti yang ditunjukkan pada Gambar 1.

Gambar 1 Membuat proyek yang baru menggunakan Eclipse


Memperoleh Maps API key
Dimulai dengan Android SDK, Anda perlu mengajukan permohonan untuk Google Maps API key gratis sebelum Anda dapat mengintegrasikan Google Maps ke dalam aplikasi Android Anda. Untuk menerapkan kunci, Anda harus mengikuti serangkaian langkah-langkah yang dijelaskan di bawah. Anda juga dapat merujuk ke dokumentasi rinci Google pada proses di  http://code.google.com/android/toolbox/apis/mapkey.html.

Pertama , jika Anda menguji aplikasi pada emulator Android, cari SDK debug certificate terletak di folder default " C : \ Documents and Settings \ <username> \ Local Settings \ Application Data \ Android ". Nama file dari keystore debug debug.keystore. Untuk menyebarkan ke perangkat Android nyata, mengganti file debug.keystore dengan berkas keystore Anda sendiri.
Untuk mempermudah, copy file ini ( debug.keystore ) ke folder di C : \ ( misalnya, membuat sebuah folder bernama " C : \ Android " ) .

Menggunakan keystore debug, Anda perlu untuk mengambil MD5 finger print menggunakan aplikasi Keytool.exe disertakan dengan instalasi JDK Anda. Sidik jari ini diperlukan untuk mengajukan permohonan Google Maps key gratis. Anda biasanya dapat menemukan Keytool.exe dari folder " C : \ Program Files \ Java \ <JDK_version_number> \ bin ".

Mengeluarkan perintah berikut ( lihat juga Gambar 2 ) untuk mengekstrak fingerprint MD5.

keytool.exe -list -alias androiddebugkey -keystore "C:\android\debug.keystore" -storepass android -keypass android


copy MD5 finger print certificate dan arahkan web browser Anda ke: http://code.google.com/android/maps-api-signup.html. Ikuti petunjuk pada halaman tersebut untuk melengkapi aplikasi dan dapatkan kunci Google Maps.

Gambar 2 Mendapatkan MD5 finger print dari debug keystore 
Untuk menggunakan Google Maps dalam aplikasi Android Anda, Anda perlu memodifikasi file AndroidManifest.xml Anda dengan menambahkan elemen <uses-library> bersama-sama dengan izin INTERNET:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="net.learn2develop.GoogleMaps"
      android:versionCode="1"
      android:versionName="1.0.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
 
    <uses-library android:name="com.google.android.maps" />  
 
        <activity android:name=".MapsActivity"
                  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-permission android:name="android.permission.INTERNET" />
 
</manifest>
</xml>

Menampilkan Map
Untuk menampilkan Google Maps dalam aplikasi Android Anda, modifikasi file main.xml yang terletak di folder res / layout. Anda harus menggunakan elemen <com.google.android.maps.MapView> untuk menampilkan Google Maps dalam aktivitas Anda. Selain itu, mari kita gunakan elemen <RelativeLayout> posisi peta dalam activity:

package net.learn2develop.GoogleMaps;
 
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
 
public class MapsActivity extends MapActivity 
{    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
 
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}
Perhatikan bahwa jika class Anda memperluas class MapActivity, Anda perlu mengganti metode isRouteDisplayed (). Anda hanya dapat melakukannya dengan menetapkan metode untuk return false. 

Itu saja! Itu saja yang perlu Anda lakukan untuk menampilkan Google Maps dalam aplikasi Anda. Tekan F11 di Eclipse untuk menyebarkan aplikasi ke sebuah emulator Android. Gambar 3 menunjukkan peta Google dalam segala kemuliaan.

Gambar 3 Google Maps dalam aplikasi anda
Pada saat ini, perhatikan beberapa rincian pemecahan masalah. Jika program Anda tidak berjalan (yaitu crash), maka kemungkinan Anda lupa untuk menempatkan pernyataan berikut dalam file AndroidManifest.xml Anda:

    <uses-library android:name="com.google.android.maps" />
Jika aplikasi Anda berhasil memuat tetapi Anda tidak dapat melihat peta (semua yang Anda lihat adalah grid), maka sangat mungkin Anda tidak memiliki kunci Peta yang valid, atau bahwa Anda tidak menentukan izin INTERNET:

    <uses-permission android:name="android.permission.INTERNET" />

Menampilkan Zoom View
Bagian sebelumnya menunjukkan bagaimana Anda dapat menampilkan Google Maps pada perangkat Android Anda. Anda dapat menarik peta untuk setiap lokasi yang diinginkan dan akan diperbarui dengan cepat. Namun, amati bahwa tidak ada cara untuk memperbesar atau memperkecil suatu lokasi tertentu. Dengan demikian, dalam bagian ini, Anda akan belajar bagaimana Anda dapat membiarkan pengguna tampilannya masuk atau keluar dari peta.

Pertama, tambahkan elemen <LinearLayout> ke file main.xml seperti berikut:

<?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="0l4sCTTyRmXTNo7k8DREHvEaLar2UmHGwnhZVHQ"
        />
 
    <LinearLayout android:id="@+id/zoom" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true" 
        android:layout_centerHorizontal="true" 
        /> 
 
</RelativeLayout>
Anda akan menggunakan elemen <LinearLayout> untuk memegang dua kontrol zoom di Google Maps (Anda akan melihat ini segera). 

Dalam file MapsActivity.java, tambahkan impor berikut:

import com.google.android.maps.MapView.LayoutParams;  
import android.view.View;
import android.widget.LinearLayout;
dan tambahkan kode berikut setelah baris setContentView (R.layout.main);

        mapView = (MapView) findViewById(R.id.mapView);
        LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);  
        View zoomView = mapView.getZoomControls(); 
 
        zoomLayout.addView(zoomView, 
            new LinearLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, 
                LayoutParams.WRAP_CONTENT)); 
        mapView.displayZoomControls(true);
File MapsActivity.java lengkap diberikan di bawah ini:

package net.learn2develop.GoogleMaps;
 
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MapView.LayoutParams;  
 
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
 
public class MapsActivity extends MapActivity 
{    
    MapView mapView; 
 
    /** 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);
        LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);  
        View zoomView = mapView.getZoomControls(); 
 
        zoomLayout.addView(zoomView, 
            new LinearLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, 
                LayoutParams.WRAP_CONTENT)); 
        mapView.displayZoomControls(true);
 
    }
 
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
}

Pada dasarnya, Anda mendapatkan contoh MapView tentang activity, mendapatkan kontrol zoom dan kemudian menambahkannya ke elemen LinearLayout Anda tambahkan ke aktivitas sebelumnya. Dalam kasus di atas, kontrol zoom akan ditampilkan di bagian bawah layar. Bila Anda sekarang tekan F11 di Eclipse, Anda akan melihat kontrol zoom ketika Anda menyentuh peta (lihat Gambar 4).

Gambar 4 Menggunakan kontrol zoom di Google Maps
Menggunakan kontrol zoom, Anda dapat memperbesar atau keluar dari lokasi hanya dengan menyentuh tombol "+" atau "-" pada layar. 

Atau, Anda juga bisa memrograma memperbesar atau keluar dari peta menggunakan Zoomin () dan zoomOut () metode dari kelas MapController:

package net.learn2develop.GoogleMaps;
 
//...
import android.os.Bundle;
import android.view.KeyEvent;
 
public class MapsActivity extends MapActivity 
{    
    MapView mapView; 
 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {
        MapController mc = mapView.getController(); 
        switch (keyCode) 
        {
            case KeyEvent.KEYCODE_3:
                mc.zoomIn();
                break;
            case KeyEvent.KEYCODE_1:
                mc.zoomOut();
                break;
        }
        return super.onKeyDown(keyCode, event);
    }    
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        //...
    }
 
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
}
Dalam kode di atas, bila pengguna menekan angka 3 pada keyboard peta akan memperbesar ke tingkat berikutnya. Menekan nomor 1 akan memperkecil satu tingkat.

Mengubah View Map
Secara default, Google Maps akan menampilkan dalam mode peta. Jika Anda ingin menampilkan peta dalam tampilan satelit, Anda dapat menggunakan setSatellite () metode class MapView, seperti ini:

   mapView.setSatellite(true);
Anda juga dapat menampilkan peta dalam tampilan jalan, menggunakan setStreetView (metode):

   mapView.setStreetView(true);

Gambar 5 menunjukkan Google Maps ditampilkan dalam tampilan satelit dan jalan.

Gambar 5 Menampilkan Google Maps dalam pandangan satelit dan jalan

Menampilkan lokasi Tertentu
Menjadi default, Google Maps menampilkan peta Amerika Serikat ketika pertama kali dimuat. Namun, Anda juga dapat mengatur Google Maps untuk menampilkan lokasi tertentu. Dalam hal ini, Anda dapat menggunakan animateTo() metode class MapController.

Kode berikut menunjukkan bagaimana hal ini dilakukan:

package net.learn2develop.GoogleMaps;
 
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.MapView.LayoutParams;
 
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
 
public class MapsActivity extends MapActivity 
{    
    MapView mapView; 
    MapController mc;
    GeoPoint p;
 
    /** 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);
        LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);  
        View zoomView = mapView.getZoomControls(); 
 
        zoomLayout.addView(zoomView, 
            new LinearLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, 
                LayoutParams.WRAP_CONTENT)); 
        mapView.displayZoomControls(true);
 
        mc = mapView.getController();
        String coordinates[] = {"1.352566007", "103.78921587"};
        double lat = Double.parseDouble(coordinates[0]);
        double lng = Double.parseDouble(coordinates[1]);
 
        p = new GeoPoint(
            (int) (lat * 1E6), 
            (int) (lng * 1E6));
 
        mc.animateTo(p);
        mc.setZoom(17); 
        mapView.invalidate();
    }
 
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
}
Dalam kode di atas, Anda pertama kali mendapatkan controller dari contoh MapView dan menetapkan ke objek MapController (mc). Anda menggunakan objek GeoPoint untuk mewakili lokasi geografis. Perhatikan bahwa untuk kelas ini garis lintang dan bujur dari lokasi diwakili dalam derajat mikro. Ini berarti bahwa mereka disimpan sebagai nilai-nilai integer. Untuk nilai lintang 40.747778, Anda perlu kalikan dengan 1E6 untuk memperoleh 40.747.778. 

Untuk menavigasi peta untuk lokasi tertentu, Anda dapat menggunakan animateTo () metode kelas MapController (sebuah contoh yang diperoleh dari objek MapView). The setZoom () metode memungkinkan Anda untuk menentukan tingkat zoom di mana peta ditampilkan. Gambar 6 menunjukkan Google Maps menampilkan peta Singapura.

Gambar 6 Menavigasi ke lokasi tertentu di peta
Ringkasan 
Pada artikel ini, kita telah belajar beberapa trik untuk Google Maps di Android. Menggunakan Google Maps, ada banyak proyek yang menarik yang Anda dapat kerjakan, seperti geo-tagging, geo-pelacakan, dll Jika Anda memiliki ide-ide keren untuk membangun layanan berbasis lokasi keren, berbagi dengan kami di kotak komentar di bawah ini. Have fun!