Selasa, 02 Juli 2013

Membuat Aplikasi Android Rute GoogleMap V2 Direction Route ke MyLocation Lokasi GPS

Dulu kita pernah membuat Aplikasi Rute Direction di Google Map Android tetapi masih Versi 1. Sekarang kita coba mempelajari Cara Membuat Aplikasi GoogleMap V2 dengan Fasilitas Rute Direction dari suatu titik, dalam hal ini adalah Marker yang sudah kita buat, menuju lokasi GPS tempat kita berada yang ditunjukkan oleh fasilitas MyLocation pada GoogleMap V2.

Sebagai pengantar bagi yang belum pernah membuat Aplikasi Peta GoogleMap Versi 2 sebaiknya Membaca dahulu Artikel Ini. Berdasarkan project dari Artikel tersebut, sekarang kita tambahkan Fasilitas Rute. Untuk mudahnya dalam pembuatan, sebenarnya fasilitas rute ini ditampilkan dengan cara Aplikasi buatan kita memanggil Aplikasi lain yang memiliki fasilitas Route Direction bisa Maps milik Google Android atau Aplikasi Web Maps.Google.com, Membuat Garis Rute Direction Sendiri di Atas Peta GoogleMap kita sebenarnya bisa, tetapi terlalu sulit, dan lama, harus memparsing informasi Direction dari Google Map, mungkin lain kali ^_^.

Langsung kita mulai dengan membuat Project baru, jangan lupa tipenya harus tipe platform Google API. Kemudian tambahkan kode program berikut ini pada MainActivity.java :



package com.amijaya.googlemapv2;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
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;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.Menu;
import android.widget.Toast;

//http://cariprogram.blogspot.com
//nuramijaya@gmail.com

public class MainActivity extends FragmentActivity {
 final int RQS_GooglePlayServices = 1;
 private GoogleMap myMap;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FragmentManager myFragmentManager = getSupportFragmentManager();
        SupportMapFragment mySupportMapFragment = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
        myMap = mySupportMapFragment.getMap();
        
        LatLng jogja = new LatLng(-7.782939, 110.367050);
        MarkerOptions markerJogja = new MarkerOptions();
        markerJogja.position(jogja);
        markerJogja.title("Tugu Yogyakarta");
        markerJogja.snippet("Tugu Pusat Kota Yogyakarta");
        markerJogja.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
        myMap.addMarker(markerJogja);
        
        LatLng amplaz = new LatLng(-7.783130530640776, 110.40135302698059);
        MarkerOptions markerAmplaz = new MarkerOptions();
        markerAmplaz.position(amplaz);
        markerAmplaz.title("Ambarrukmo Plaza");
        markerAmplaz.snippet("Ambarrukmo Plaza Yogyakarta");
        markerAmplaz.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
        myMap.addMarker(markerAmplaz);
        
        myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        
        myMap.getUiSettings().setCompassEnabled(true);
        
        myMap.getUiSettings().setZoomControlsEnabled(true);
        
        myMap.getUiSettings().setMyLocationButtonEnabled(true);
        
        myMap.setMyLocationEnabled(true);
        
        myMap.animateCamera(CameraUpdateFactory.newLatLngZoom(jogja, 15));
        
        myMap.setOnMarkerClickListener(new OnMarkerClickListener() {
   
   @Override
   public boolean onMarkerClick(Marker arg0) {
    // TODO Auto-generated method stub
    
    try {
     StringBuilder urlString = new StringBuilder();         
     String daddr = (String.valueOf(arg0.getPosition().latitude)+","+String.valueOf(arg0.getPosition().longitude)); 
     urlString.append("http://maps.google.com/maps?f=d&hl=en"); 
     urlString.append("&saddr="+String.valueOf(myMap.getMyLocation().getLatitude())+","+String.valueOf(myMap.getMyLocation().getLongitude())); 
     urlString.append("&daddr="+daddr);
     Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString.toString()));
     startActivity(i);
    } catch (Exception ee) {
     Toast.makeText(getApplicationContext(), "Lokasi Saat Ini Belum Didapatkan, Coba Nyalakan GPS, Keluar Ruangan dan Tunggu Beberapa Saat", Toast.LENGTH_LONG).show();
    }
    return false;
   }
  });
        
        
        myMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
   
   @Override
   public void onInfoWindowClick(Marker arg0) {
    // TODO Auto-generated method stub
    //JIKA KLIKNYA INGIN DI INFO WINDOW
   }
  });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
}

Setelah itu buat layout di activity_main.xml sebagai berikut :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"
        />
</RelativeLayout>

Untuk AndroidManifest.xml kita setting seperti ini, ingat untuk mengganti Google Map Key dengan milik anda sendiri agar sesuai dengan SDK di komputer anda. Jika belum mengerti silakan membaca artikel sebelumnya:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.amijaya.googlemapv2"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"/>
    
    <permission
        android:name="com.amijaya.googlemapv2.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
        
    <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 
    <uses-feature android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIz-Google-APi-Key-Anda" />
        <activity
            android:name="com.amijaya.googlemapv2.MainActivity"
            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>

</manifest>

Jangan lupa hidupkan GPS dan Internet, tunggu beberapa saat sampai mendapatkan sinyal GPS, jika belum mendapatkan tetapi sudah diklik markernya hasilnya seperti ini :


Sedangkan setelah mendapatkan Sinyal GPS dan diklik salah satu Marker hasilnya keluar pilihan Route Direction mau ditampilkan di Aplikasi Maps atau Web Browser :


Jika kita memilih Aplikasi Maps :


Jika Memilih Browser Web akan membuka Web Maps.Google.com :

 

Jangan lupa lokasi Marker di aplikasi ini ada di Yogyakarta jadi hati-hati jika misalnya anda ada di Jakarta, bisa-bisa yang muncul adalah Direction Route yang sangat panjang yang menampilkan jalan dari Jakarta ke Yogyakarta :) Edit dahulu Latitude dan Longitude dari Marker-markernya dengan lokasi yang dekat dengan posisi anda, gunakan Maps.Google.com untuk mencari latitude longitude atau dengan web seperti mapjogja.com yang dapat menampilkan Latitude-Longitude jika marker digeser.

Tidak ada komentar:

Posting Komentar

news