tutorial membangun aplikasi android menggunakan google maps dan google direction api _ pratama...

Upload: sisco-lamato-dio

Post on 14-Jan-2016

81 views

Category:

Documents


2 download

DESCRIPTION

ANDROID

TRANSCRIPT

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 1/33

    Tutorial Android SQLite Database

    Tutorial Membangun Aplikasi Android MenggunakanGoogle Maps dan Google Direction API

    Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API

    Sebelumnya saya pernah membuat artikel tentang bagaimana penerapan google maps dan google

    directions API pada sistem operasi android, melihat reaksi dari pembaca blog ini yang lumayan banyak,

    saya memutuskan akan membuat kembali sebuah artikel yang mengangkat tema yang sama yakni

    penerapan google maps dan google direction API pada Android.

    Aplikasi yang akan saya buat kali ini adalah aplikasi penunjuk arah tempat makan yang ada dijogja,

    gambarannya adalah pada map akan terdapat marker penunjuk lokasi tempat makan tersebut berada dan

    ketika user melakukan klik marker maka akan muncul info window yang menampilkan informasi tentang

    tempat makan tersebut, dan apabila user mengklik info window tersebut maka user akan dialihkan ke

    jendela informasi mengenai tempat makan tersebut dan dijendela informasi tempat makan ini akan

    menampilkan informasi tempat makan tersebut dan sebuah tombol untuk mendapatkan direction atau

    penunjuk arah dari posisi user sekarang menuju lokasi tempat makan tersebut.

    1. Menyiapkan Google Play Service LibraryDalam aplikasi yang akan saya buat ini, saya akan menerapkan Google Maps API V2 dimana google maps

    api itu sendiri merupakan bagian dari google play service library, maka dari itu jika anda belum menginstall

    Google play service library silahkan anda menginstallnya, melalui menu Window > Android SDK Manager

    google api

    Setelah anda menginstall Google Play Service Library langkah selanjutnya adalah melakukan import

    Google Play Service Library kedalam workspace anda. . caranya adalah Klik Menu File Import > General >

    Existing Project into Workspace > Browse kemudian masuk kedalam folder sdk android anda.. perhatikan

    gambar berikut ini. .

    Google Play Service Library

    yang perlu saya tekankan disini adalah, posisi Folder Android SDK anda harus dalam satu drive yang

    sama dengan tempat penyimpanan project yang akan anda buat nanti, dikarena dari pengalaman yang

    Home Android Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 2/33

    saya temukan kemarin, ada beberapa project yang muncul error dikarenakan library tidak berhasil ke import

    kedalam project.

    2. Mendapatkan API Key untuk Google Mapsuntuk dapat menampilkan Google Maps kedalam aplikasi, kita membutuhkan API Key yang akan kita

    dapatkan dari developer console. Sebelum registrasi api key, kita akan membuat fingerprint SHA1 yang

    dibutuhkan nanti saat registrasi API Key. Untuk membuat fingerprint sha1 kita menggunakan

    debug.keystore yang akan digenerate oleh eclipse ketika kita running suatu aplikasi. Secara default

    debug.keystore akan berada didalam folder .android didalam folder user. . lihat screenshot berikut :

    debug keystore

    setelah anda berada didalam folder .android gunakan perintah berikut untuk mendapatkan fingerprint sha1

    anda

    setelah anda menjalankan perintah diatas maka akan muncul fingerprint sha1 milik anda

    Fingerprint SHA1

    Setelah itu arahkan browser anda ke Apis Console create project baru, kemudian pastikan pada bagian

    services pilihan Google Maps Android V2 pada posisi ON. Kemudian anda tinggal gunakan pilihan Create

    new Android Key dan masukkan fingerprint sha1 anda beserta nama package aplikasi anda.. contoh dalam

    project kali ini nama package saya adalah id.pratama.tempatmakanjogja

    3. Membuat Project Android BaruLangkah selanjutnya setelah kita mendapatkan apikey adalah membuat project androidnya, sebelumn jauh

    disini saya menginformasikan dalam project ini saya menggunakan ADT Versi 21.1 dan target SDK API 17.

    Untuk membuat project baru, masuk menu File > New > Android Application Project

    1 keytool -list -alias androiddebugkey -keystore debug.keystore -storepassandroid -keypass android -v

    1 45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0;id.pratama.tempatmakanjogja

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 3/33

    Tempat Makan Jogja 1

    langsung next saja, sampai kita mendapatkan project seperti dibawah ini

    Langkah selanjutnya menambahkan Google Play Service libray kedalam project yang barusan kita buat

    tadi.. caranya adalah Klik Kanan pada nama project Tempat Makan Jogja kemudian pilih menu properties

    > Android > Add kemudian tambahkan library google play servicenya..

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 4/33

    setelah anda menambahkan library google play servicesnya langkah selanjutnya yang musti anda lakukan

    adalah merubah file activity_main.xml menjadi seperti berikut ini. .

    pada file activity_main.xml saya menggunakan RelativeLayout dan menambahkan sebuah fragment untuk

    menampilkan maps kita nanti.

    Selanjutnya kita harus merubah file MainActivity.java menjadi seperti berikut ini

    Pada file ini yang dirubah hanyalah superClassnya, untuk menggunakan Maps V2 activity harus mewarisi

    kelas FragmentActivity

    File selanjutnya yang mesti dirubah adalah AndroidManifest.xml kita perlu menambahkan beberapa

    permission agar aplikasi kita dapat menampilkan maps.

    Yang pertama adalah

    01 06 11

    01 package id.pratama.tempatmakanjogja;0203 import android.os.Bundle;04 import android.support.v4.app.FragmentActivity;05 import android.view.Menu;0607 public class MainActivity extends FragmentActivity08 {0910 @Override

    11 protected void onCreate(Bundle savedInstanceState)12 {13 super.onCreate(savedInstanceState);14 setContentView(R.layout.activity_main);15 }1617 @Override18 public boolean onCreateOptionsMenu(Menu menu)19 {20 // Inflate the menu; this adds items to the action bar if it is

    present.21 getMenuInflater().inflate(R.menu.main, menu);22 return true;23 }2425 }

    1

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 5/33

    selanjutnya adalah

    perhatikan penamaan package, sesuaikan dengan nama package anda. Dan yang terakhir adalah

    menambahkan apikey didalam tag application

    maka hasil akhirnya akan seperti berikut ini..

    kemudian coba anda jalankan project tersebut.. maka akan keluar tampilan sebagai berikut

    2

    3 4 5 6

    1

    2 5

    1

    01 02 06 09 10

    11

    12

    13

    14

    15

    16 19 22 27 30 33 34 35 36 37 38

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 6/33

    Tempat Makan Jogja

    untuk anda ketahui Google Maps API Versi 2 tidak dapat dijalankan langsung melalui emulator, untuk dapat

    menjalankan project android yang menggunakan Maps API Versi 2 perlu sedikit setting yakni menginstall

    google play kedalam emulator yang akan menjalankan project kita.. Saya sudah menyiapkan sebuah file

    yang berisi vending dan google gms link donwload

    Setelah anda mendownload file tersebut langkah selanjutnya adalah setting path untuk ADB, disini kita

    membutuhkan perintah adb yang dijalankan melalui command prompt. File adb sendiri ada didalam folder

    android sdk platform-tools selanjutnya jalankan emulator anda dan cek dengan perintah berikut . .

    Tempat Makan Jogja

    terlihat emulator kita telah terdeteksi oleh adb, langkah selanjutnya adalah melakukan instalasi vending dan

    gms, silahkan anda masuk kedalam folder dimana file hasil extrack tadi anda tempatkan. Kemudian

    lakukan perintah . .

    1 adb devices

    1 adb install nama_file_apk

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 7/33

    Tempat Makan Jogja

    kemudian coba jalankan kembali project anda. .

    Tempat Makan Jogja

    sampai pada tahap ini kita sudah dapat memunculkan peta didalam aplikasi kita, langkah selanjutnya

    adalah memunculkan lokasi kita saat ini. Pada file MainActivity.java saya menambahkan 3 buah method,,

    yang pertama adalah. .

    pada method setupMapIfNeeded() ini saya mengInisialisasi maps jika maps sudah tidak null lagi maka

    selanjutnya adalah memanggil method setupMap()

    Pada google maps v2, google sudah menambahkan sebuah fungsi untuk menampilkan posisi kita saat ini

    01 private void setupMapIfNeeded()02 {03 if (map == null)04 {05 FragmentManager fragmentManager = getSupportFragmentManager();06 SupportMapFragment supportMapFragment = (SupportMapFragment)

    fragmentManager.findFragmentById(R.id.maps);07 map = supportMapFragment.getMap();0809 if (map != null)10 {11 setupMap();12 }13 }1415 }

    1 private void setupMap()2 {3 map.setMyLocationEnabled(true);4 moveToMyLocation();

    5 }

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 8/33

    dan sebuah tombol yang apabila kita tekan maka akan membawa kita ke posisi kita saat ini, fungsi itu

    dapat dipanggil dengan cara

    selanjutnya, didalam method setupMap terdapat method moveToMyLocation() yang berisi sebagai berikut

    pada method ini saya menggunakan class LocationManager untuk mendapatkan posisi saat ini, dan

    apabila posisi sudah ditemukan makan map akan dianimasikan menuju lokasi tersebut. File

    MainActivity.java secara keseluruhan akan nampak sebagai berikut :

    1 map.setMyLocationEnabled(true);

    01 private void moveToMyLocation()02 {03 LocationManager locationManager = (LocationManager)

    getSystemService(Context.LOCATION_SERVICE);04 Criteria criteria = new Criteria();0506 Location location =

    locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false));

    07 if (location != null)08 {09 map.animateCamera(CameraUpdateFactory.newLatLngZoom(10 new LatLng(location.getLatitude(),

    location.getLongitude()), 13));11 }12 }

    01 package id.pratama.tempatmakanjogja;02 03 import com.google.android.gms.common.ConnectionResult;04 import com.google.android.gms.common.GooglePlayServicesUtil;05 import com.google.android.gms.maps.CameraUpdateFactory;06 import com.google.android.gms.maps.GoogleMap;07 import com.google.android.gms.maps.SupportMapFragment;08 import com.google.android.gms.maps.model.LatLng;09 10 import android.content.Context;11 import android.location.Criteria;12 import android.location.Location;13 import android.location.LocationManager;14 import android.os.Bundle;15 import android.support.v4.app.FragmentActivity;16 import android.support.v4.app.FragmentManager;17 import android.view.Menu;18 19 public class MainActivity extends FragmentActivity20 {21 private GoogleMap map;2223 @Override24 protected void onCreate(Bundle savedInstanceState)25 {26 super.onCreate(savedInstanceState);27 setContentView(R.layout.activity_main);28 setupMapIfNeeded();29 }3031 private void setupMapIfNeeded()32 {33 if (map == null)34 {

    35 FragmentManager fragmentManager = getSupportFragmentManager();36 SupportMapFragment supportMapFragment = (SupportMapFragment)

    fragmentManager.findFragmentById(R.id.maps);37 map = supportMapFragment.getMap();3839 if (map != null)40 {41 setupMap();42 }43 }4445 }4647 private void setupMap()48 {49 map.setMyLocationEnabled(true);50 moveToMyLocation();51 }5253 private void moveToMyLocation()54 {55 LocationManager locationManager = (LocationManager)

    getSystemService(Context.LOCATION_SERVICE);56 Criteria criteria = new Criteria();5758 Location location =

    locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false));

    59 if (location != null)60 {

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 9/33

    sebelum anda menjalankan project ini, kita harus terlebih dahulu mengirimkan lokasi koordinat kedalam

    emulator kita, cara ini dapat dilakukan melalui DDMS > kemudian Emulator Control

    Tempat Makan Jogja

    jika anda sudah mengirimkan koordinat tersebut selanjutnya adalah mencoba menjalankan projectnya. .

    Tempat Makan Jogja

    Selanjutnya adalah bagaimana caranya menampilkan lokasi tempat makannya, disini saya membuat

    sebuah API yang menampilkan data tempat makan, alamatnya serta lokasi latitude dan longitudenya.. api

    yang saya buat dapat diakses melalui url berikut

    61 map.animateCamera(CameraUpdateFactory.newLatLngZoom(62 new LatLng(location.getLatitude(),

    location.getLongitude()), 13));63 }64 }6566 @Override67 public boolean onCreateOptionsMenu(Menu menu)68 {69 // Inflate the menu; this adds items to the action bar if it is

    present.70 getMenuInflater().inflate(R.menu.main, menu);71 return true;72 }7374 @Override75 protected void onResume()76 {77 // TODO Auto-generated method stub78 super.onResume();7980 int resCode =

    GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());81 if (resCode != ConnectionResult.SUCCESS)82 {83 GooglePlayServicesUtil.getErrorDialog(resCode, this, 1);84 }85 }8687 }

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 10/33

    struktur table untuk api yang saya buat adalah sebagai berikut :

    Tempat Makan Jogja

    dan untuk script phpny adalah sebagai berikut :

    setelah selesai membuat sebuah API, langkah selanjutnya adalah kita mempersiapkan sebuah class

    untuk menangani pertukaran antara data dari webservice/api ke device android kita. Pertama saya

    mempersiapkan sebuah class Entity yang berisikan variable untuk data yang ada dari APInya.. berikut

    classnya.. saya beri nama TempatMakan.java

    1 http://api.pratamawijaya.com/tempatmakan.php

    01

    01 /*02 * Pratama Nur Wijaya (c) 201303 *04 * Project : Tempat Makan Jogja05 * Filename : TempatMakan.java06 * Creation Date : Apr 7, 2013 time : 1:54:50 PM07 *08 */09 10 package id.pratama.tempatmakanjogja.entity;11 12 public class TempatMakan13 {14 private int id;15 private String nama;16 private String alamat;

    17 private double lat;18 private double lng;1920 public TempatMakan()21 {22 // TODO Auto-generated constructor stub23 }2425 public TempatMakan(int id, String nama, String alamat, double lat, double

    lng)26 {27 super();28 this.id = id;29 this.nama = nama;30 this.alamat = alamat;31 this.lat = lat;32 this.lng = lng;33 }3435 public String getNama()36 {

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 11/33

    class ini hanya berisi variable, konstruktor, dan method getter dan setter.

    Selanjutnya adalah mempersiapkan class JSONHelper untuk menangani data JSONnya, class ini saya

    adopsi dari beberapa tutorial yang ada seperti dari AndroidHive

    37 return nama;38 }3940 public void setNama(String nama)41 {42 this.nama = nama;43 }4445 public String getAlamat()46 {47 return alamat;48 }4950 public void setAlamat(String alamat)51 {52 this.alamat = alamat;53 }5455 public double getLat()56 {57 return lat;58 }5960 public void setLat(double lat)61 {62 this.lat = lat;63 }6465 public double getLng()66 {67 return lng;68 }6970 public void setLng(double lng)71 {72 this.lng = lng;73 }7475 }

    001 /*002 * Pratama Nur Wijaya (c) 2013003 *

    004 * Project : Tempat Makan Jogja005 * Filename : JSONHelper.java006 * Creation Date : Apr 7, 2013 time : 1:47:27 PM007 *008 */009 010 package id.pratama.tempatmakanjogja;011 012 import id.pratama.tempatmakanjogja.entity.TempatMakan;013 014 import java.io.BufferedReader;015 import java.io.IOException;016 import java.io.InputStream;017 import java.io.InputStreamReader;018 import java.io.UnsupportedEncodingException;019 import java.util.ArrayList;020 021 import org.apache.http.HttpEntity;022 import org.apache.http.HttpResponse;023 import org.apache.http.client.ClientProtocolException;024 import org.apache.http.client.methods.HttpGet;025 import org.apache.http.impl.client.DefaultHttpClient;026 import org.json.JSONArray;027 import org.json.JSONException;028 import org.json.JSONObject;029 030 import android.util.Log;031 032 public class JSONHelper033 {034 private InputStream is = null;035 private JSONObject jsonObject = null;036 private String json = "";037038 private final String TAG_TEMPATMAKAN = "tempatmakan";039 private final String TAG_ID = "id";040 private final String TAG_NAMA = "nama";041 private final String TAG_ALAMAT = "alamat";042 private final String TAG_LAT = "lat";043 private final String TAG_LNG = "lng";044045 public JSONObject getJSONFromURL(String url)046 {047 try048 {049 DefaultHttpClient httpClient = new DefaultHttpClient();050 HttpGet httpGet = new HttpGet(url);051

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 12/33

    Sampai sini class untuk menangani data dari webservice sudah selesai dibuat, untuk penerapannya rubah

    file MainActivity.java menjadi sebagai berikut :

    052 HttpResponse httpResponse = httpClient.execute(httpGet);053 HttpEntity httpEntity = httpResponse.getEntity();054 is = httpEntity.getContent();055 } catch (UnsupportedEncodingException e)056 {057 e.printStackTrace();058 } catch (ClientProtocolException e)059 {060 e.printStackTrace();061 } catch (IOException e)062 {063 e.printStackTrace();064 }065 066 try067 {068 BufferedReader reader = new BufferedReader(new InputStreamReader(069 is, "iso-8859-1"), 8);070 071 StringBuilder sb = new StringBuilder();072 String line = null;073

    074 while ((line = reader.readLine()) != null)075 {076 sb.append(line + "\n");077 }078 079 is.close();080 json = sb.toString();081 } catch (Exception e)082 {083 // TODO: handle exception084 }085 086 try087 {088 jsonObject = new JSONObject(json);089 090 } catch (JSONException e)091 {092 // TODO: handle exception093 }094 095 return jsonObject;096 }097 098 public ArrayList getTempatMakanAll(JSONObject jobj)099 {100 ArrayList listTempatMakan = new ArrayList

    ();101 102 try103 {104 JSONArray arrayTempatMakan = jobj.getJSONArray(TAG_TEMPATMAKAN);105 106 for (int i = 0; i < arrayTempatMakan.length(); i++)107 {108 JSONObject jobject = arrayTempatMakan.getJSONObject(i);109 110 Log.d("log", "muter ke " + i);111 listTempatMakan.add(new

    TempatMakan(jobject.getInt(TAG_ID),jobject.getString(TAG_NAMA),jobject.getString(TAG_ALAMAT), jobject

    112 .getDouble(TAG_LAT), jobject.getDouble(TAG_LNG)));113 114 }115 } catch (JSONException e)116 {117 e.printStackTrace();118 }119 return listTempatMakan;120 }121 }

    001 package id.pratama.tempatmakanjogja;002 003 import id.pratama.tempatmakanjogja.entity.TempatMakan;004 005 import java.util.ArrayList;006 007 import org.json.JSONObject;008 009 import com.google.android.gms.common.ConnectionResult;010 import com.google.android.gms.common.GooglePlayServicesUtil;011 import com.google.android.gms.maps.CameraUpdateFactory;012 import com.google.android.gms.maps.GoogleMap;013 import com.google.android.gms.maps.SupportMapFragment;

    014 import com.google.android.gms.maps.model.LatLng;015 import com.google.android.gms.maps.model.MarkerOptions;016 017 import android.app.ProgressDialog;

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 13/33

    018 import android.content.Context;019 import android.location.Criteria;020 import android.location.Location;021 import android.location.LocationManager;022 import android.os.AsyncTask;023 import android.os.Bundle;024 import android.support.v4.app.FragmentActivity;025 import android.support.v4.app.FragmentManager;026 import android.view.Menu;027 028 public class MainActivity extends FragmentActivity029 {030 private GoogleMap map;031 private JSONHelper json;032 private ProgressDialog pDialog;033 034 private ArrayList listTempatMakan;035 private final String URL_API =

    "http://api.pratamawijaya.com/tempatmakan.php";036 037 @Override038 protected void onCreate(Bundle savedInstanceState)039 {040 super.onCreate(savedInstanceState);041 setContentView(R.layout.activity_main);042 json = new JSONHelper();043 044 new AsynTaskMain().execute();045 046 setupMapIfNeeded();047 }048 049 private void setupMapIfNeeded()050 {051 if (map == null)052 {053 FragmentManager fragmentManager = getSupportFragmentManager();054 SupportMapFragment supportMapFragment = (SupportMapFragment)

    fragmentManager.findFragmentById(R.id.maps);055 map = supportMapFragment.getMap();056 057 if (map != null)058 {059 setupMap();060 }061 }062 063 }064 065 private void setupMap()066 {067 map.setMyLocationEnabled(true);068 moveToMyLocation();069 }070 071 private void moveToMyLocation()072 {073 LocationManager locationManager = (LocationManager)

    getSystemService(Context.LOCATION_SERVICE);074 Criteria criteria = new Criteria();075 076 Location location =

    locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false));

    077 if (location != null)078 {

    079 map.animateCamera(CameraUpdateFactory.newLatLngZoom(080 new LatLng(location.getLatitude(),

    location.getLongitude()), 13));081 }082 }083 084 @Override085 public boolean onCreateOptionsMenu(Menu menu)086 {087 // Inflate the menu; this adds items to the action bar if it is

    present.088 getMenuInflater().inflate(R.menu.main, menu);089 return true;090 }091 092 @Override093 protected void onResume()094 {095 // TODO Auto-generated method stub096 super.onResume();097 098 int resCode =

    GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());099 if (resCode != ConnectionResult.SUCCESS)100 {101 GooglePlayServicesUtil.getErrorDialog(resCode, this, 1);102 }103 }104 105 private class AsynTaskMain extends AsyncTask106 {

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 14/33

    saya jelaskan sebisa saya , pertama untuk mendapatkan data dari webservice kita menggunakan

    bantuan class JSONHelper, pada baris 31 kita inisialisasi untuk class JSONHelper dengan nama objek

    json. Kemudian untuk instansiasinya dilakukan pada baris 42

    Kemudian, pada android versi 3.0 keatas, kita tidak dapat langsung menjalankan method yang

    berhubungan dengan acces httpclient, kita harus memisahkan eksekusi method tersebut dari thread

    utama, maka disini kita membutuhkan sebuah class AsyncTask untuk menangani eksekusi method dari

    json helper. Pada class MainActivity.java saya menambahkan sebuah inner class yang saya beri nama

    AsynTaskMain. Pada class AsynTask ini terdapat 3 buah method yaitu :

    - doInBackground : Pada method inilah proses eksekusi method dari json

    - onPreExecute : Pada method ini maksudnya adalah, apa yang akan dijalankan sebelum mengEksesuki

    doinBackground, dalam method ini saya menampilkan sebuah progress dialog yang akan menampilkan

    teks Loading.

    - onPostExecute : Method ini adalah method yang akan dijalankan ketika prosess di method

    doInbackground selesai dijalankan.

    Kemudian coba anda jalankan projectnya ..

    107 108 @Override109 protected void onPostExecute(Void result)110 {111 // TODO Auto-generated method stub112 pDialog.dismiss();113 runOnUiThread(new Runnable()114 {115 116 @Override117 public void run()118 {119 // TODO Auto-generated method stub120 for (int i = 0; i < listTempatMakan.size(); i++)121 {122 map.addMarker(new MarkerOptions()123 .position(new

    LatLng(listTempatMakan.get(i).getLat(), listTempatMakan.get(i).getLng()))124 .title(listTempatMakan.get(i).getNama())125 .snippet(listTempatMakan.get(i).getAlamat()));126 127 }128 }129 });130 131 super.onPostExecute(result);132 }133 134 @Override135 protected void onPreExecute()136 {137 // TODO Auto-generated method stub138 super.onPreExecute();139 pDialog = new ProgressDialog(MainActivity.this);140 pDialog.setMessage("Loading....");141 pDialog.setCancelable(true);142 pDialog.show();143 }144

    145 @Override146 protected Void doInBackground(Void... params)147 {148 // TODO Auto-generated method stub149 150 JSONObject jObject = json.getJSONFromURL(URL_API);151 listTempatMakan = json.getTempatMakanAll(jObject);152 return null;153 }154 }155 156 }

    1 json = new JSONHelper();

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 15/33

    Tempat Makan Jogja

    Selanjutnya yang akan kita tangani adalah, jika user klik infowindow yang ada, misal dari contoh diatas

    ketika user mengKlik infoWindow untuk marker Warung SS RingRoad Utara maka akan muncul sebuah

    layout baru yang akan berisikan informasi mengenai Warung SS RingRoad utara dan sebuah tombol untuk

    menampilkan directions dari lokasi user saat ini menuju Warung SS RingRoad Utara.

    Agar infowindow kita dapat diklik, maka kita harus menambahkan action ke setiap marker yang ada. Action

    ini didapat dari interface onInfoWindowClickListener, anda tinggal mengimplementkan interface ini ke class

    MainActivity.java hasil akhirnya akan seperti ini :

    001 package id.pratama.tempatmakanjogja;002 003 import id.pratama.tempatmakanjogja.entity.TempatMakan;004 import java.util.List;005 import org.json.JSONObject;006 import com.google.android.gms.common.ConnectionResult;007 import com.google.android.gms.common.GooglePlayServicesUtil;008 import com.google.android.gms.maps.CameraUpdateFactory;009 import com.google.android.gms.maps.GoogleMap;010 import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;011 import com.google.android.gms.maps.SupportMapFragment;012 import com.google.android.gms.maps.model.LatLng;013 import com.google.android.gms.maps.model.Marker;014 import com.google.android.gms.maps.model.MarkerOptions;015 import android.app.ProgressDialog;016 import android.content.Context;017 import android.content.Intent;018 import android.location.Criteria;019 import android.location.Location;020 import android.location.LocationManager;021 import android.os.AsyncTask;022 import android.os.Bundle;023 import android.support.v4.app.FragmentActivity;024 import android.support.v4.app.FragmentManager;

    025 import android.view.Menu;026 027 public class MainActivity extends FragmentActivity implements

    OnInfoWindowClickListener028 {029 private GoogleMap map;030 private JSONHelper json;031 private ProgressDialog pDialog;032 private LatLng myLocation;033 034 private List listTempatMakan;035 private final String URL_API =

    "http://api.pratamawijaya.com/tempatmakan.php";036 037 public static final String KEY_NAMA = "nama";038 public static final String KEY_ALAMAT = "alamat";039 public static final String KEY_LAT_TUJUAN = "lat_tujuan";040 public static final String KEY_LNG_TUJUAN = "lng_tujuan";041 public static final String KEY_LAT_ASAL = "lat_asal";042 public static final String KEY_LNG_ASAL = "lng_asal";043 044 @Override045 protected void onCreate(Bundle savedInstanceState)046 {047 super.onCreate(savedInstanceState);048 setContentView(R.layout.activity_main);

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 16/33

    049 json = new JSONHelper();050 051 new AsynTaskMain().execute();052 053 setupMapIfNeeded();054 }055 056 private void setupMapIfNeeded()057 {058 if (map == null)059 {060 FragmentManager fragmentManager = getSupportFragmentManager();061 SupportMapFragment supportMapFragment = (SupportMapFragment)

    fragmentManager.findFragmentById(R.id.maps);062 map = supportMapFragment.getMap();063 064 if (map != null)065 {066 setupMap();067 }068 }069 070 }071 072 private void setupMap()073 {074 map.setMyLocationEnabled(true);075 map.setOnInfoWindowClickListener(this);076 moveToMyLocation();077 }078 079 private void moveToMyLocation()080 {081 LocationManager locationManager = (LocationManager)

    getSystemService(Context.LOCATION_SERVICE);082 Criteria criteria = new Criteria();083 084 Location location =

    locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false));

    085 if (location != null)086 {087 map.animateCamera(CameraUpdateFactory.newLatLngZoom(088 new LatLng(location.getLatitude(),

    location.getLongitude()), 13));

    089 }090 }091 092 @Override093 public boolean onCreateOptionsMenu(Menu menu)094 {095 // Inflate the menu; this adds items to the action bar if it is

    present.096 getMenuInflater().inflate(R.menu.main, menu);097 return true;098 }099 100 @Override101 protected void onResume()102 {103 // TODO Auto-generated method stub104 super.onResume();105 106 int resCode =

    GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());107 if (resCode != ConnectionResult.SUCCESS)108 {109 GooglePlayServicesUtil.getErrorDialog(resCode, this, 1);110 }111 }112 113 private class AsynTaskMain extends AsyncTask114 {115 116 @Override117 protected void onPostExecute(Void result)118 {119 // TODO Auto-generated method stub120 pDialog.dismiss();121 runOnUiThread(new Runnable()122 {123 124 @Override125 public void run()126 {127 // TODO Auto-generated method stub128 for (int i = 0; i < listTempatMakan.size(); i++)129 {130 131 map.addMarker(new MarkerOptions()132 .position(new

    LatLng(listTempatMakan.get(i).getLat(),133 listTempatMakan.get(i).getLng()))134 .title(listTempatMakan.get(i).getNama())135 .snippet(listTempatMakan.get(i).getAlamat()));136 137 }

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 17/33

    ketika anda sudah mengImplement interface onInfoWindowClickListener dan masih error, itu berarti anda

    belom mengImplement method yang ada pada interface onInfoWindowClickListener, tinggal anda klik balon

    lampu merah kemudian unImplementMethod sehingga akan menambahkan sebuah method baru yakni

    onInfoWindowClick. Action onInfoWindowClickListener tidak akan bejalan jika anda tidak mengSet action

    tersebut ke map anda, maka tambahkan pada method setupMap()

    Pada method onInfoWindowClick akan ditambahkan sebuah logic, ketika user mengKlik infowindow

    tersebut maka kita akan berpindah halaman menuju halaman infotempatmakan, dan pada halaman

    tersebut akan tampil nama, dan alamat tempat makan yang kita pilih dan sebuah button Direction. Pada

    method ini juga akan terjadi perpindahan activity dengan membawa beberapa variable yang saya butuhkan

    untuk activity infotempatmakan, untuk transfer data antar activity saya menggunakan class Bundle.

    Untuk anda ketahui setiap marker yang dibuat diatas map memiliki sebuah nilai id berdasarkan urutan

    marker itu dibuat. Seperti halnya array yang selalu dimulai dari index 0, begitu pula marker akan memiliki id

    m0, m1,m2 dan seterusnya. Disini saya membutuhkan angkanya saja, sehingga untuk mengambil

    angkanya saja dapat dengan code berikut :

    kenapa saya mengambil berupa angkanya saja, dikarena sebelumnya saya menyimpan data lokasi tempat

    makan pada sebuah List, dan untuk mengakses list tersebut saya menggunakan indexnya

    Selanjutnya adalah tinggal memasukkan ke bundle apa saja nilai/value yang akan saya transfer ke avtivity

    138 }139 });140 141 super.onPostExecute(result);142 }143 144 @Override145 protected void onPreExecute()146 {147 // TODO Auto-generated method stub148 super.onPreExecute();149 pDialog = new ProgressDialog(MainActivity.this);150 pDialog.setMessage("Loading....");151 pDialog.setCancelable(true);152 pDialog.show();153 }154

    155 @Override156 protected Void doInBackground(Void... params)157 {158 // TODO Auto-generated method stub159 160 JSONObject jObject = json.getJSONFromURL(URL_API);161 listTempatMakan = json.getTempatMakanAll(jObject);162 return null;163 }164 }165 166 @Override167 public void onInfoWindowClick(Marker marker)168 {169 // marker id -> m0, m1, m2 dst..170 String id = marker.getId();171 id = id.substring(1);172 173 myLocation = new LatLng(map.getMyLocation().getLatitude(),

    map.getMyLocation().getLongitude());174 175 if (myLocation != null)176 {177 Bundle bundle = new Bundle();178 bundle.putString(KEY_NAMA,

    listTempatMakan.get(Integer.parseInt(id)).getNama());179 bundle.putString(KEY_ALAMAT,

    listTempatMakan.get(Integer.parseInt(id)).getAlamat());180 bundle.putDouble(KEY_LAT_TUJUAN, marker.getPosition().latitude);181 bundle.putDouble(KEY_LNG_TUJUAN, marker.getPosition().longitude);182 bundle.putDouble(KEY_LAT_ASAL, myLocation.latitude);183 bundle.putDouble(KEY_LNG_ASAL, myLocation.longitude);184 185 Intent i = new Intent(MainActivity.this,

    InfoTempatMakanActivity.class);186 i.putExtras(bundle);187 startActivity(i);188 189 } else190 {191 Toast.makeText(this, "Tidak dapat menemukan lokasi anda ",

    Toast.LENGTH_LONG).show();192 }193 }194 }

    1 map.setOnInfoWindowClickListener(this);

    1 String id = marker.getId();2 id = id.substring(1);

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 18/33

    infotempatmakan..

    Langkah selanjutnya anda membuat activity baru, caranya File > New > Other > Android > Android Activity

    Tempat Makan Jogja

    Beri nama InfoTempatMakanActivity

    fitur ini sebelumnya tidak ada, pada adt versi sebelumnya untuk membuat activity kita harus membuat class

    terlebih dahulu dan mengExtendskan ke Activity, kemudian mengoverride method onCreate, kemudian

    membuat file layoutnya, dan terakhir menambakan ke file manifest, cukup memakan waktu, namun

    sekarang tidak lagi dikarenaka fitur keren ini secara otomatis kita akan dibuatkan sebuah layout dan

    mendaftarkan activity kita kedalam file manifest.

    Untuk layout infotempatmakan saya membuatnya seperti ini

    cukup sederhana, hanya terdiri dari 2 TextView, dan sebuah Button

    1 bundle.putString(KEY_NAMA,listTempatMakan.get(Integer.parseInt(id)).getNama());

    2 bundle.putString(KEY_ALAMAT,listTempatMakan.get(Integer.parseInt(id)).getAlamat());

    3 bundle.putDouble(KEY_LAT, marker.getPosition().latitude);4 bundle.putDouble(KEY_LNG, marker.getPosition().longitude);

    01 10 15 22 29

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 19/33

    Untuk class InfoTempatMakanActivity saya membuatnya seperti berikut ini :

    yang perlu diperhatikan pada class ini adalah bagian beriku :

    01 /*02 * Pratama Nur Wijaya (c) 201303 *04 * Project : Tempat Makan Jogja05 * Filename : InfoTempatMakanActivity.java06 * Creation Date : Apr 7, 2013 time : 1:47:27 PM07 *08 */09 10 package id.pratama.tempatmakanjogja;11 12 import com.google.android.gms.maps.model.LatLng;13 import android.os.Bundle;14 import android.app.Activity;15 import android.content.Intent;16 import android.view.View;17 import android.view.View.OnClickListener;18 import android.widget.Button;19 import android.widget.TextView;20 21 public class InfoTempatMakanActivity extends Activity implements

    OnClickListener22 {23 24 private TextView tvNama;25 private TextView tvAlamat;26 private Button btnGetDirection;27 28 private LatLng lokasiTujuan;29 private LatLng lokasiAwal;

    30 private String nama;31 private String alamat;32 33 @Override34 protected void onCreate(Bundle savedInstanceState)35 {36 super.onCreate(savedInstanceState);37 setContentView(R.layout.activity_info_tempat_makan);38 39 initialize();40 41 Bundle bundle = getIntent().getExtras();42 if (bundle != null)43 {44 nama = bundle.getString(MainActivity.KEY_NAMA);45 alamat = bundle.getString(MainActivity.KEY_ALAMAT);46 lokasiTujuan = new

    LatLng(bundle.getDouble(MainActivity.KEY_LAT_TUJUAN),47 bundle.getDouble(MainActivity.KEY_LNG_TUJUAN));48 lokasiAwal = new

    LatLng(bundle.getDouble(MainActivity.KEY_LAT_ASAL),49 bundle.getDouble(MainActivity.KEY_LNG_ASAL));50 }51 52 setTeksView();53 54 }55 56 private void setTeksView()57 {58 tvNama.setText(nama);59 tvAlamat.setText(alamat);60 }61 62 private void initialize()63 {64 tvAlamat = (TextView) findViewById(R.id.alamatTempatMakan);65 tvNama = (TextView) findViewById(R.id.namaTempatMakan);66 btnGetDirection = (Button) findViewById(R.id.btnDirection);67 btnGetDirection.setOnClickListener(this);68 }69 70 @Override71 public void onClick(View v)72 {73 Bundle bundle = new Bundle();74 bundle.putDouble(MainActivity.KEY_LAT_ASAL, lokasiAwal.latitude);75 bundle.putDouble(MainActivity.KEY_LNG_ASAL, lokasiAwal.longitude);76 bundle.putDouble(MainActivity.KEY_LAT_TUJUAN, lokasiTujuan.latitude);77 bundle.putDouble(MainActivity.KEY_LNG_TUJUAN,

    lokasiTujuan.longitude);78 bundle.putString(MainActivity.KEY_NAMA, nama);79 80 Intent intent = new Intent(this, DirectionActivity.class);81 intent.putExtras(bundle);82 83 startActivity(intent);84 }85 86 }

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 20/33

    potongan kode diatas digunakan untuk mengambil data yang diberikan oleh activity sebelumnya, data ini

    berupa nama, alamat dan latitude longitude lokasi yang dituju..

    kemudian untuk penanganan tombol direction berada pada method berikut ini :

    tampilan dari infotempat makan akan seperti berikut ini:

    Tempat Makan Jogja

    Langkah terakhir adalah membuat activity untuk directionsnya.. silahkan anda buat kembali satu buah

    activity, pada contoh kali ini saya beri nama DirectionActivity. Untuk layoutnya tidak berbeda jauh dengan

    layout untuk maps sebelumnya, berikut ini layout directionacitvity :

    sedangkan untuk class nya adalah seperti berikut ini :

    01 Bundle bundle = getIntent().getExtras();02 if (bundle != null)03 {04 nama = bundle.getString(MainActivity.KEY_NAMA);05 alamat = bundle.getString(MainActivity.KEY_ALAMAT);06 lokasiTujuan = new

    LatLng(bundle.getDouble(MainActivity.KEY_LAT_TUJUAN),

    07 bundle.getDouble(MainActivity.KEY_LNG_TUJUAN));08 lokasiAwal = new

    LatLng(bundle.getDouble(MainActivity.KEY_LAT_ASAL),09 bundle.getDouble(MainActivity.KEY_LNG_ASAL));10 }

    01 @Override02 public void onClick(View v)03 {04 Bundle bundle = new Bundle();05 bundle.putDouble(MainActivity.KEY_LAT_ASAL, lokasiAwal.latitude);06 bundle.putDouble(MainActivity.KEY_LNG_ASAL, lokasiAwal.longitude);07 bundle.putDouble(MainActivity.KEY_LAT_TUJUAN, lokasiTujuan.latitude);08 bundle.putDouble(MainActivity.KEY_LNG_TUJUAN, lokasiTujuan.longitude);09 bundle.putString(MainActivity.KEY_NAMA, nama);10 11 Intent intent = new Intent(this, DirectionActivity.class);12 intent.putExtras(bundle);13 14 startActivity(intent);15 }

    01 06 11 12

    001 package id.pratama.tempatmakanjogja;002 003 import java.util.List;

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 21/33

    004 005 import org.json.JSONObject;006 007 import com.google.android.gms.common.ConnectionResult;008 import com.google.android.gms.common.GooglePlayServicesUtil;009 import com.google.android.gms.maps.CameraUpdateFactory;010 import com.google.android.gms.maps.GoogleMap;011 import com.google.android.gms.maps.SupportMapFragment;012 import com.google.android.gms.maps.GoogleMap.OnMyLocationChangeListener;013 import com.google.android.gms.maps.model.LatLng;014 import com.google.android.gms.maps.model.MarkerOptions;015 import com.google.android.gms.maps.model.PolylineOptions;016 017 import android.location.Criteria;018 import android.location.Location;019 import android.location.LocationManager;020 import android.os.AsyncTask;021 import android.os.Bundle;022 import android.app.ProgressDialog;023 import android.content.Context;024 import android.graphics.Color;025 import android.support.v4.app.FragmentActivity;026 import android.support.v4.app.FragmentManager;027 import android.view.Menu;028 import android.widget.Toast;029 030 public class DirectionActivity extends FragmentActivity implements

    OnMyLocationChangeListener031 {032 private final String URL =

    "http://maps.googleapis.com/maps/api/directions/json?";033 private LatLng start;034 private LatLng end;035 private String nama;036 037 private GoogleMap map;038 private JSONHelper json;039 private ProgressDialog pDialog;040 private List listDirections;041 042 @Override043 protected void onCreate(Bundle savedInstanceState)044 {045 super.onCreate(savedInstanceState);046 setContentView(R.layout.activity_direction);047 json = new JSONHelper();048 setupMapIfNeeded();049 050 Bundle b = getIntent().getExtras();

    051 if (b != null)052 {053 start = new LatLng(b.getDouble(MainActivity.KEY_LAT_ASAL),

    b.getDouble(MainActivity.KEY_LNG_ASAL));054 end = new LatLng(b.getDouble(MainActivity.KEY_LAT_TUJUAN),

    b.getDouble(MainActivity.KEY_LNG_TUJUAN));055 nama = b.getString(MainActivity.KEY_NAMA);056 }057 058 new AsyncTaskDirection().execute();059 }060 061 private void setupMapIfNeeded()062 {063 if (map == null)064 {065 FragmentManager fragmentManager = getSupportFragmentManager();066 SupportMapFragment supportMapFragment = (SupportMapFragment)

    fragmentManager067 .findFragmentById(R.id.mapsdirections);068 map = supportMapFragment.getMap();069 070 if (map != null)071 {072 setupMap();073 }074 }075 076 }077 078 private void setupMap()079 {080 map.setMyLocationEnabled(true);081 map.setOnMyLocationChangeListener(this);082 moveToMyLocation();083 }084 085 private void moveToMyLocation()086 {087 LocationManager locationManager = (LocationManager)

    getSystemService(Context.LOCATION_SERVICE);088 Criteria criteria = new Criteria();089 090 Location location =

    locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false));

    091 if (location != null)092 {

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 22/33

    Kemudian saya juga kembali menambahkan beberapa method pada class JSONHelper.java sehingga

    akan menjadi seperti ini :

    093 map.animateCamera(CameraUpdateFactory.newLatLngZoom(094 new LatLng(location.getLatitude(),

    location.getLongitude()), 13));095 }096 }097 098 @Override099 public boolean onCreateOptionsMenu(Menu menu)100 {101 // Inflate the menu; this adds items to the action bar if it is

    present.102 getMenuInflater().inflate(R.menu.direction, menu);103 return true;104 }105 106 @Override107 protected void onResume()108 {109 // TODO Auto-generated method stub110 super.onResume();111 int resCode =

    GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());

    112 if (resCode != ConnectionResult.SUCCESS)113 {114 GooglePlayServicesUtil.getErrorDialog(resCode, this, 1);115 }116 }117 118 private class AsyncTaskDirection extends AsyncTask119 {120 @Override121 protected Void doInBackground(Void... params)122 {123 String uri = URL124 + "origin=" + start.latitude + "," + start.longitude125 + "&destination=" + end.latitude + "," + end.longitude126 + "&sensor=true&units=metric";127 128 JSONObject jObject = json.getJSONFromURL(uri);129 listDirections = json.getDirection(jObject);130 131 return null;132 }133 134 @Override135 protected void onPreExecute()136 {137 // TODO Auto-generated method stub138 super.onPreExecute();139 pDialog = new ProgressDialog(DirectionActivity.this);140 pDialog.setMessage("Loading....");141 pDialog.setCancelable(true);142 pDialog.show();143 }144 145 @Override146 protected void onPostExecute(Void result)147 {148 // TODO Auto-generated method stub149 super.onPostExecute(result);150 pDialog.dismiss();151 gambarDirection();152 }153 154 }155 156 public void gambarDirection()157 {158 PolylineOptions line = new

    PolylineOptions().width(3).color(Color.BLUE);159 for (int i = 0; i < listDirections.size(); i++)160 {161 line.add(listDirections.get(i));162 }163 map.addPolyline(line);164 165 // tambah marker di posisi end166 map.addMarker(new MarkerOptions()167 .position(end)168 .title(nama));169 }170 171 @Override172 public void onMyLocationChange(Location location)173 {174 Toast.makeText(this, "Lokasi berubah ke " + location.getLatitude() +

    "," + location.getLongitude(),175 Toast.LENGTH_SHORT).show();176 177 }178 }

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 23/33

    001 /*002 * Pratama Nur Wijaya (c) 2013003 *004 * Project : Tempat Makan Jogja005 * Filename : JSONHelper.java006 * Creation Date : Apr 7, 2013 time : 1:47:27 PM007 *008 */009 010 package id.pratama.tempatmakanjogja;011 012 import id.pratama.tempatmakanjogja.entity.TempatMakan;013 import java.io.BufferedReader;014 import java.io.IOException;015 import java.io.InputStream;016 import java.io.InputStreamReader;017 import java.io.UnsupportedEncodingException;018 import java.util.ArrayList;019 import java.util.List;020 021 import org.apache.http.HttpEntity;022 import org.apache.http.HttpResponse;023 import org.apache.http.client.ClientProtocolException;024 import org.apache.http.client.methods.HttpGet;025 import org.apache.http.impl.client.DefaultHttpClient;026 import org.json.JSONArray;027 import org.json.JSONException;028 import org.json.JSONObject;029 import com.google.android.gms.maps.model.LatLng;030 import android.util.Log;031 032 public class JSONHelper033 {034 private InputStream is = null;035 private JSONObject jsonObject = null;036 private String json = "";037 038 private final String TAG_TEMPATMAKAN = "tempatmakan";039 private final String TAG_ID = "id";040 private final String TAG_NAMA = "nama";041 private final String TAG_ALAMAT = "alamat";042 private final String TAG_LAT = "lat";043 private final String TAG_LNG = "lng";044 private final String TAG_ROUTES = "routes";045 private final String TAG_LEGS = "legs";046 private final String TAG_STEPS = "steps";047 private final String TAG_POLYLINE = "polyline";048 private final String TAG_POINTS = "points";049 private final String TAG_START = "start_location";050 private final String TAG_END = "end_location";051 052 public JSONObject getJSONFromURL(String url)053 {054 try055 {056 DefaultHttpClient httpClient = new DefaultHttpClient();057 HttpGet httpGet = new HttpGet(url);058 059 HttpResponse httpResponse = httpClient.execute(httpGet);060 HttpEntity httpEntity = httpResponse.getEntity();061 is = httpEntity.getContent();062 } catch (UnsupportedEncodingException e)063 {064 e.printStackTrace();065 } catch (ClientProtocolException e)066 {067 e.printStackTrace();068 } catch (IOException e)069 {070 e.printStackTrace();071 }072 073 try074 {075 BufferedReader reader = new BufferedReader(new InputStreamReader(076 is, "iso-8859-1"), 8);077 078 StringBuilder sb = new StringBuilder();079 String line = null;080 081 while ((line = reader.readLine()) != null)082 {083 sb.append(line + "\n");084 }085 086 is.close();087 json = sb.toString();088 } catch (Exception e)089 {090 // TODO: handle exception091 }092 093 try094 {095 jsonObject = new JSONObject(json);096 097 } catch (JSONException e)

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 24/33

    098 {099 // TODO: handle exception100 }101 102 return jsonObject;103 }104 105 public ArrayList getTempatMakanAll(JSONObject jobj)106 {107 ArrayList listTempatMakan = new ArrayList

    ();108 109 try110 {111 JSONArray arrayTempatMakan = jobj.getJSONArray(TAG_TEMPATMAKAN);112 113 for (int i = 0; i < arrayTempatMakan.length(); i++)114 {115 JSONObject jobject = arrayTempatMakan.getJSONObject(i);116 117 Log.d("log", "muter ke " + i);118 listTempatMakan.add(new TempatMakan(jobject.getInt(TAG_ID),

    jobject.getString(TAG_NAMA), jobject119 .getString(TAG_ALAMAT), jobject120 .getDouble(TAG_LAT), jobject.getDouble(TAG_LNG)));121 122 }123 } catch (JSONException e)124 {125 e.printStackTrace();126 }127 return listTempatMakan;128 }129 130 /*131 * Untuk decode Polyline132 *133 * @params String134 *135 * @return List

    136 */137 private List decodePoly(String encoded)138 {139 List poly = new ArrayList();140 int index = 0, len = encoded.length();141 int lat = 0, lng = 0;142 while (index < len)143 {144 int b, shift = 0, result = 0;145 do146 {147 b = encoded.charAt(index++) - 63;148 result |= (b & 0x1f) = 0x20);151 int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));152 lat += dlat;153 shift = 0;154 result = 0;155 do156 {157 b = encoded.charAt(index++) - 63;158 result |= (b & 0x1f) = 0x20);161 int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));162 lng += dlng;163 164 LatLng position = new LatLng((double) lat / 1E5, (double) lng /

    1E5);165 poly.add(position);166 }167 return poly;168 169 }170 171 /*172 * Untuk mendapatkan direction173 *174 * @params JSONObject175 *176 * @return List177 */178 public List getDirection(JSONObject jObj)179 {180 181 List directions = new ArrayList();182 183 try184 {185 JSONObject objRoute =

    jObj.getJSONArray(TAG_ROUTES).getJSONObject(0);186 JSONObject objLegs =

    objRoute.getJSONArray(TAG_LEGS).getJSONObject(0);187 JSONArray arraySteps = objLegs.getJSONArray(TAG_STEPS);188 for (int wi2t = 0; wi2t < arraySteps.length(); wi2t++)189 {

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 25/33

    method utama untuk membaca direction adalah method getDirection, pada method ini akan memparsing

    data dari google direction yang berupa latitude dan longitude,, kemudian akan digambar kedalam peta yang

    kita miliki. Berikut ini tampilan hasil akhir dari aplikasi dalam tutorial ini

    Tempat Makan Jogja

    Tags: android, api, google, maps, pemrograman, tutorial, versi 2,menampilkan banyak tempat di aplikasi mapandroid,tutorial android map v 2 pratama w ijaya,tutorial membuat aplikasi android dengan google maps dan google directionapi,f ile tempat menyimpan key google api,get direction map v2,menampilkan google maps v2 dan direction android,googlemap api v2 sqlite android,google maps v2 directions android nur w ijaya,contoh program android direction,membuatprogram android map dengan google api,langkah import google play service ke activity,android google maps sqlitev1,tutorial mencari lokasi terdekat google maps v2,membuat map android aplikasi,android tutorial direction,membuatdirection di android 2013,membuat direction android dan marker\,aplikasi google api android,membuat map direction mapsapi v2,menampilkan posisi saat ini di google maps api

    148 comments

    ALSO ON PRATAMA WIJAYA

    Alternati f Mendaftar Akun Google

    Play Publisher Tanpa 2 comments

    Tutorial Android SQLite Database

    24 comments

    Tutorial Android Google Direction

    API di Maps V2 24 comments

    What's this?AROUND THE WEB

    These 4 Things Happen Right

    Before a Heart Attack Newsmax Health

    How to Find Out a Private Number

    Phone Call eHow

    One Crazy Night: Watch 'This is Not

    Happening' Now Comedy Central

    Leave a message...

    0

    190 JSONObject step = arraySteps.getJSONObject(wi2t);191 JSONObject objStart = step.getJSONObject(TAG_START);192 JSONObject objEnd = step.getJSONObject(TAG_END);193 double latStart = objStart.getDouble(TAG_LAT);194 double lngStart = objStart.getDouble(TAG_LNG);195 196 directions.add(new LatLng(latStart, lngStart));197 198 JSONObject poly = step.getJSONObject(TAG_POLYLINE);199 String encodedPoly = poly.getString(TAG_POINTS);200 201 List decodedPoly = decodePoly(encodedPoly);202 for (int eka = 0; eka < decodedPoly.size(); eka++)

    203 {204 directions.add(new LatLng(decodedPoly.get(eka).latitude,

    decodedPoly.get(eka).longitude));205 }206 207 double latEnd = objEnd.getDouble(TAG_LAT);208 double lngEnd = objEnd.getDouble(TAG_LNG);209 directions.add(new LatLng(latEnd, lngEnd));210 211 }212 } catch (JSONException e)213 {214 // TODO: handle exception215 }216 217 return directions;218 }219 }

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 26/33

    Leave a message...

    NewestNewest CommunityCommunity ShareShare

    Reply

    Mar Fian a day ago

    mas cara nampilin tempat makannya berdasarkan radius dari lokasi kita ... seperti

    2 km .. gimana ya mas ?

    !

    Reply

    Mar Fian a day ago

    Mas cara nampilin tempat makannya berdasarkan radius dari lokasi kita ..

    misalnya 5 km .. itu gimana ya mas ?

    !

    Reply

    hynra 3 days ago

    Mas mau tanya kalo mau nampilin dari my location (current location) ke

    destination location yang sudah diketahui lat sama long nya bagaimana mas ?

    !

    Reply

    Pratama Nur W ijaya 3 days agor0 0 t hynra

    maksudnya nampilin kayak gimana yah,, ???

    !

    Reply

    hynra 3 days ago Pratama Nur Wijaya

    Jadi draw path dari lokasi sekarang (detect by gps) menuju lokasi

    yang sudah diketahui latitude sama longitudenya. Sederhananya

    saya mau bikin aplikasi pulang rumah mas, jadi nanti dimanapun

    saya berada si aplikasinya nampilin direction ke rumah saya. kira2

    gmn ya ?

    !

    Reply

    Pratama Nur W ijaya 2 days agor0 0 t hynra

    lha ini contohnya kan dari lokasi saya sekarang ke rumah

    makan mas..

    jadi aplikasi contoh ini dimanapun lokasi kita.. bakal

    digambarkan directionnya menuju rumah makan yg dipilih..

    :)

    !

    Reply

    reza 6 days ago

    mas saya mau tanya peta saya sudah keluar tetapi directionnya tidak bisa

    bagaimana ya mas.? dia tidak mau pindah ke activity info tempat maknnya dan

    tidak ke directionnya juga. bagaimana ya mas?

    !

    Reply

    Pratama Nur W ijaya 5 days agor0 0 t reza

    LOGGGGCAAATTT please.. -___-

    !

    reza 4 days ago Pratama Nur Wijaya

    maaf mas ini logcatnya. mohon bantuannya mas untuk penulisan

    ilmiah saya. terima kasih mas.

    Share

    Share

    Share

    Share

    Share

    Share

    Share

    Share

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 27/33

    Reply !

    Reply

    Pratama Nur W ijaya 4 days agor0 0 t reza

    itu bukan logcat error.. nek logcat error itu mesti warnanya

    merah..

    coba deh perhatikan komen2 dibawah ini.. -______-

    !

    Reply

    reza 2 days ago Pratama Nur Wijaya

    nah itu dia mas saya tidak ada error karena saya tidak

    running di emulator. saya langsung running di device mas.

    peta keluar dan marker keluar. tetapi dia tidak mau

    meneruskan ke directionnya. apakah memang harus

    running di emulator terlebih dahulu baru bisa running di

    device mas? apakah mas membuka tempat konsultasi

    dijakarta mas? agar saya bisa datang.

    !

    Reply

    Pratama Nur W ijaya 2 days agor0 0 t reza

    saya orang jogja e mas... _^^

    ini gak harus running di emulator koq..

    malah disarankan langsung ke device..

    berarti peta ok.. kan kalo contoh ini... dia akan pindah ke

    directionnya ketika infowindowmarkernya di klik..

    nah tempat mas sama ndak kayak gitu..?? kalo iya sama..

    perhatikan.. di mapnya mesti di set listenernya..

    map.setOnInfoWindowClickListener(this);

    coba cek..

    !

    Reply

    Pritho 16 days ago

    mas mow tanya,pas nginstall adb ny,saya kok gagal truz yaw,,,,,,,,

    ini yang saya coba lewat cmd,,,,,,,

    truz itu file gms n vending nya sudah saya taruh di platform-tools nya,,,,,,,,

    C:\Program Files\Android\sdk\platform-tools>adb install com.android.vending-

    108b71f4793186b8fd1768a9cd19bbd5.apk

    2483 KB/s (6158861 bytes in 2.421s)

    pkg:

    /data/local/tmp/com.android.vending108b71f4793186b8fd1768a9cd19bbd5.apk

    Failure [INSTALL_FAILED_ALREADY_EXISTS]

    mohon bantuan nya

    !

    Reza Aditya R a month ago

    mas boleh bertanya

    kan maps v2 itu tampilannya street view

    nah apabila menambahkan tombol switch jadi satelite view gmn yah mas?

    jadi bisa milih mau street view dan juga satelite view

    Share

    Share

    Share

    Share

    Share

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 28/33

    Reply

    jadi bisa milih mau street view dan juga satelite view

    terima kasih

    !

    Reply

    Zaldy Putra a month ago

    kalo klik info marker langsung forse close... logcat.nya muncul gini.

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t Zaldy Putra

    null pointer..

    sudahkah menginject lokasi gps ke device..?

    cek juga apakah lat lng device sudah ada..

    MainActivity.java baris 169 ada apa..?

    !

    Reply

    Zaldy Putra a month ago

    setiap info marker di klik, langsung force close.

    muncul eror di logcat sperti ini kenapa yah?

    !

    Reply

    Rany Beginc lipse a month ago

    kalau pencarian direction yg ini pakai metode apa ya??

    !

    Reply

    Zaldy Putra a month ago

    Pertanyaan sebelumnya batal mas, nah ini ada kasus baru hahahaa...

    DDMS.nya Eror wkwkwkw. kalo masukin koordinat cuma geser2 di jalur

    katulistiwa aja... hahahaha

    kalo itu kira2 gmana mas??

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t Zaldy Putra

    ini ketika running di emulatorkah..?

    !

    Zaldy Putra a month ago Pratama Nur Wijaya

    iya mas, pas di running di emulator.

    apa kemungkinan bug dari ddms ADT 22?

    oh iya mas, di database.nya itu ada berapa file php mas?

    masih bingung niy... ada file_koneksi.php dll?

    Share

    Share

    Share

    Share

    Share

    Share

    Share

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 29/33

    Reply !

    Reply

    Zaldy Putra a month ago

    mas kalo di logcat selalu muncul failed to find provider itu kenapa?

    !

    Reply

    Zaldy Putra a month ago

    mas pratama, mau nanya dong, itu buat databasenya pake SQL yah?

    trus masukin php.nya dmana yah? apa di masukin jadi satu folder sebagai file

    koneksi?

    nb : umpamanya saya online.kan SQL.nya, dibuatin satu subdomain kyak punya

    mas. file php saya taruh dmana?

    Thanks mas, maaf niy gak ngerti sama sekali ttg web

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t Zaldy Putra

    iya.. file extensi .php bisa satu folder dengan file koneksinya

    !

    Reply

    iwan febi pradana a month ago Pratama Nur Wijaya

    file koneksi di mana mas?

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t iwan febi pradana

    dimana.. ??

    di satu folder bisa.. atau folder lainnya.. nanti tinggal

    menyesuaikan include nya

    !

    Reply

    Zaldy Putra a month ago Pratama Nur Wijaya

    Name.nya?

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t Zaldy Putra

    name file..? terserah.. coba aja.. nanti tau sendiri gimana

    cara settingnya di hostingnya

    !

    Reply

    iwan febi pradana a month ago Pratama Nur Wijaya

    ini SQL biasa apa SQLite mas? saya masih bingung..

    trus apa harus databasenya di hostingkan?

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t iwan febi pradana

    gak harus online sih.. tergantung kebutuhan..

    disini contohnya saya menggunakan mySQL yang ada di

    hosting saya ini.. jadi aplikasi kesannya aplikasi akan lebih

    mudah update data..

    !

    iwan febi pradana a month ago Pratama Nur Wijaya

    mas saya sudah hostingkan database saya tapi koq ga bisa

    Share

    Share

    Share

    Share

    Share

    Share

    Share

    Share

    Share

    Share

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 30/33

    Reply

    ya...ini alamatnya http://m.vanilla-shop.com/temp...

    dan ini hasilnya :

    {"k5889300_tempat":[{"id":"1","nama":"RSI","alamat":"Jl.

    A.yani","lat":"-7.245322","lng":"112.735777"},

    {"id":"2","nama":"Tunjungan Plaza","alamat":"Jl. Tunjungan,

    Kota Surabaya 60261, Indonesia

    ?","lat":"-7.262691","lng":"112.739933"},

    {"id":"3","nama":"Royal Plaza","alamat":"Jl.

    A.yani","lat":"-7.317520","lng":"112.733776"},

    {"id":"4","nama":"UNESA","alamat":"Jl.

    Ketintang","lat":"-7.309517","lng":"112.728111"}]}

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t iwan febi pradana

    gak bisa pye mas..?

    !

    Reply

    iwan febi pradana a month ago Pratama Nur Wijaya

    ni logcatnya mas

    !

    Reply

    iwan febi pradana a month ago Pratama Nur Wijaya

    eror mas gak bisa d buka mapnya

    !

    Reply

    iwan febi pradana a month ago

    mas AVDnya harus menggunakan google api berapa ? kok masih belum bisa

    keluar mapnya.

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t iwan febi pradana

    kalo maps masih tidak keluar.. cek logcatnya..

    !

    Reply

    Zaldy Putra a month ago Pratama Nur Wijaya

    gak bisa emang gan, AVD gak support OpenGLES 02

    hehehehe... harus running di device

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t Zaldy Putra

    bukan gak support... avd itu bisa koq njalanin aplikasi yang

    menggunakan OpenGLES 02.. tapi ketika membuat avd

    harus di centang 'use host gpu' :)

    !

    Share

    Share

    Share

    Share

    Share

    Share

    Share

    Share

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 31/33

    Reply

    frans.yunet a month ago

    Alow dab...

    Aku mau tanya, setelah aku coba tutorial nya...

    1. Dibagian MainActivity

    myLocation = new LatLng(map.getMyLocation().getLatitude(),

    map.getMyLocation().getLongitude());

    Ada muncul pesan/tanda "error" --> myLocation cannot resolved to a variable

    2. Dibagian : DirectionActivity

    @Override

    public boolean onCreateOptionsMenu(Menu menu)

    {

    // Inflate the menu; this adds items to the action bar if it is present.

    getMenuInflater().inflate(R.menu.direction, menu);

    return true;

    }

    Ada muncul pesan/tanda "error" --> directions cannot resolved or is not a field.

    (kalo di tutorial line 102.)

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t frans.yunet

    1. Tambahkan object myLocation dari class LatLng (cek post ini, sudah

    saya update)

    2.Hapus method onCreateOptionsMenu, itu tidak saya gunakan.. hanya

    method menu option bawaan dari ADT

    !

    Reply

    ages a month ago

    mas cara nambahin waktu dan jarak tempuh gmn??

    pencerahan'a donk mas :(

    !

    Reply

    Yunnisa Mut iara a month ago

    Mas kalo mau bikin database nya di sqlite expert,bisa ga mas di maps v2?

    Klo bisa caranya gimana ya?

    Terima kasih

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t Yunnisa Mutiara

    sqlite expert..?

    !

    Reply

    Yunnisa Mut iara a month ago Pratama Nur Wijaya

    Jadi spaya lbh praktis,saya pake sqlite expert personal(software

    buat bikin database,interface nya kayak access) jdi ntar pake

    dbhelper

    Tpi ga ngerti ngehubunginnya,

    klo bikin databse di eclipse nya langsung kebanyakan,kalo di

    php,internet ga dukung

    Mohon bantuannya mas

    Terima kasih

    !

    Pratama Nur W ijaya a month agor0 0 t Yunnisa Mutiara

    owh.. berarti nanti datanya langsung dari database

    sqlitenya..

    Share

    Share

    Share

    Share

    Share

    Share

    see more

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 32/33

    Reply

    yaudah.. tinggal panggil.. mbaknya mesti menguasai dulu

    sqlite di android...

    nanti tinggal baca latitude dan logitudenya langsung dari db

    sqlitenya. . . :)

    eh kalo tidak dukung internet.. gimana mau nampilin maps

    nya...?? kan harus load maps dari google maps.. dan itu

    membutuhkan internet.. :))

    !

    Reply

    Yunnisa Mut iara a month ago Pratama Nur Wijaya

    Yah,dukung2 internetnya,tapi terbatas :)

    Emg di load langsung ke device ga bisa ya?

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t Yunnisa Mutiara

    mapsnya yang ndak bisa di load tanpa koneksi internet.. :)

    !

    Reply

    Chris t ian Virgo a month ago

    kalo tampilangnya gini gimana mas?

    !

    Reply

    Pratama Nur W ijaya a month agor0 0 t Christian Virgo

    di artikel ini kan sudah saya jelaskan kenapa tampil seperti itu..

    mohon dibaca dengan teliti artikelnya ya mas.. :)

    !

    iwan febi pradana a month ago

    mas ini kenapa ya?

    Share

    Share

    Share

    Share

    Share

  • 7/7/13 Tutorial Membangun Aplikasi Android Menggunakan Google Maps dan Google Direction API | Pratama Wijaya

    pratamawijaya.com/programming/tutorial-membangun-aplikasi-android-menggunakan-google-maps-dan-google-direction-api 33/33

    Reply !

    Share

    Tutorial Android SQLite Database

    Pratama Wijaya Pratama Wijaya Official Blog GoSimplex WordPress Themes

    Bloggers.Com

    Contoh Program Android