modul gis

76

Transcript of modul gis

Page 1: modul gis
Page 2: modul gis

i

KATA PENGANTAR

Puji syukur penulis ucapkan kepada Allah SWT, karena berkat rahmat dan

karunia-Nya penulis dapat menyususn dan menyelasaikan Modul Mobile GIS

Application dengan baik. Adapaun tujuan modul ini adalah untuk membantu peserta

workshop untuk membangun sebuah aplikasi mobile

Dalam penulisan modul ini, tidak jarang penulis menghadapi berbagai

hambatan. Oleh karena itu, selesainya penulisan laporan ini tentunya tidak lepas dari

bantuan dari berbagai pihak baik berupa saran, kritik, dorongan maupun tenaga. Dalam

kesempatan kali ini penulis ingin menyampaikan ucapan terimakasih kepada :

1. Bapak Prof. Surya Afnarius, Ph.D selaku dosen pembimbing mata kuliah

Geographic Information System.

2. Mahasiswa Sistem Informasi Universitas Andalas yang membantu selama

proses pembuatan modul dan persiapan workshop

3. Pihak lain yang tidak dapat penulis sebut satu persatu yang telah mendukung

dan membantu dalam penyelesaian modul dan persiapan workshop ini.

Penulis menyadari bahwa laporan ini masih jauh dari sempurna. Mengingat

keterbatasan dan kemampuan yang dimiliki penulis. Untuk itu penulis mohon maaf

sekiranya ada kesalahan dan kekurangan dalam pelaksanaan penyusunan laporan ini.

Penulis berharap modul ini dapat bermanfaat, terutama kepada pembaca dan penulis

sendiri.

Padang, November 2012

Tim Penulis

Page 3: modul gis

ii

DAFTAR ISI

KATA PENGANTAR ....................................................................................................... i

DAFTAR ISI .................................................................................................................... ii

BAB I GIS ........................................................................................................................ 1

1.1 Pengertian GIS ................................................................................................... 1

1.2 Applikasi Mobile ................................................................................................ 1

1.3 Mobile GIS Application .................................................................................... 2

BAB II INSTALASI ......................................................................................................... 6

2.1 Java ..................................................................................................................... 6

2.2 Eclipse .............................................................................................................. 15

2.3 Membuat AVD ................................................................................................. 22

2.4 BlueStack.......................................................................................................... 24

BAB III PEMBUATAN APLIKASI .............................................................................. 28

3.1 Build Project ..................................................................................................... 28

3.1.1 Dengan Adobe PhoneGap Build ...................................................................... 28

3.1.2 Dengan MDS Applaud ..................................................................................... 30

3.1.3 Tanpa MDS Applaud........................................................................................ 33

3.2 Membangun aplikasi mobile GIS ..................................................................... 46

3.3.1 Tampilan Program ............................................................................................ 68

BAB IV KESIMPULAN ................................................................................................ 72

DAFTAR KEPUSTAKAAN .......................................................................................... 73

Page 4: modul gis

1

BAB I GIS

1.1 Pengertian GIS

Sistem Informasi Geografis (bahasa Inggris: Geographic Information System

disingkat GIS) adalah sistem informasi khusus yang mengelola data yang memiliki

informasi spasial (bereferensi keruangan). Dalam arti yang lebih sempit, GIS adalah

sistem komputer yang memiliki kemampuan untuk membangun, menyimpan,

mengelola dan menampilkan informasi berefrensi geospasial, misalnya data yang

diidentifikasi menurut lokasinya, dalam sebuah database.

Data GIS dapat dibagi menjadi dua macam, yaitu data spasial dan data atribut atau

tabular. Data spasial adalah data yang menggambarkan bentuk atau kenampakan objek

di permukaan bumi. Sedangkan data tabular adalah data deskriptif yang menyatakan

nilai dari data spasial tersebut.

Secara garis besar, data spasial dibedakan menjadi tiga macam yaitu data titik

(point), garis (line) dan area (region atau polygon). Data spasial Titik biasanya

digunakan untuk mewakili objek kota, bangunan, kondisi lahan. Data Garis dapat

dipakai untuk menggambarkan jalan, sungai, jaringan atau saluran dan lain-lain.

Sementara data Area digunakan untuk mewakili batas administrasi, penggunaan lahan,

kemiringan lereng dan lain-lain. Sedangkan struktur data SIG ada dua macam yaitu

vector dan raster . Pada struktur data vector posisi objek dicatat pada system koordinat.

Sedangkan objek pada struktur data raste disimpan pada grid dua dimensi yaitu baris

dan kolom.

Data atribut atau tabular merupakan data yang menyimpan informasi mengenai

nilai atau besaran dari data spasial. Untuk struktur data vector, data atribut tersimpan

secara terpisah dalam bentuk tabel. Sementara pada stuktur data raster nilai data spasial-

nya tersimpan langsung pada nilai grid atau piksel tersebut.

1.2 Applikasi Mobile

Aplikasi adalah program yang digunakan orang untuk melakukan sesuatu pada

sistem komputer

Page 5: modul gis

2

Mobile dapat diartikan sebagai perpindahan yang mudah dari satu tempat ke

tempat yang lain, misalnya telepon mobile berarti bahwa terminal telepon yang dapat

berpindah dengan mudah dari satu tempat ke tempat lain tanpa terjadi pemutusan atau

terputusnya komunikasi.

Aplikasi mobile merupakan aplikasi yang dapat digunakan walaupun pengguna

berpindah dengan mudah dari satu tempat ketempat lain lain tanpa terjadipemutusan

atau terputusnya komunikasi. Aplikasi ini dapat diakses melalui perangkat nirkabel

seperti pager, seperti telepon seluler dan PDA.

1.3 Mobile GIS Application

Applikasi yang tersedia pada perangkat mobile yang berfungsi mengelola sistem

informasi khusus yang mengelola data yang memiliki informasi spasial (bereferensi

keruangan).

Dan kemudian, untuk membangun sebuah perangkat mobile gis application

tersebut tak lepas kita memerlukan bantuan perangkat lunak IDE

IDE sendiri memiliki kepanjangan (Integrated Development Environment)

yang merupakan sebuah perangkat lunak computer yang memiliki fungsi – fungsi untuk

pembuatan suatu perangkat lunak computer. Dengan menggunakan IDE maka kita akan

memiliki tools – tools yang diperlukan dalam keperluan pembuatan perangkat lunak

computer.

Eclipse merupakan salah satu perangkat lunak IDE, eclipse sendiri merupakan

salah satu perangkat lunak yang popular karena perangkat tersebut bersifat gratis dan

open source. Ditambah dengan fitur plugin , membuat eclipse bisa ditambahkan

berbagai macam komponen – komponen baru yang di inginkan. Membuat eclipse

semakian memiliki banyak fungsi dalam membuat suatu aplikasi perangkat lunak.

Dan alasan lainya mengapa eclipse menjadi salah satu pilihan terbaik perangkat

IDE adalah karena

a. Multi Platform – bisa digunakan pada berbagai macam system operasi.

Seperti linux, windows, solaris, dan mac – os

b. Multi language – eclipse dapat menggunakan berbagai macam bahasa

pemograman C , C++ , Phyton , PHP , Cobol dll. Meskipun bahasa untuk

pengembangan eclipse itu sendiri ialah java

Page 6: modul gis

3

c. Multi use – selain untuk pembuatan perangkat lunak aplikasi, eclipse dapat

digunakan untuk pembuatan berkas dokumentasi, pengembangan web,

pengujian perangkat lunak aplikasi dan lain sebagainya.

Kemudian kita akan masuk ke salah satu plugin yang dapat digunakan eclipse

yaitu phonegap / apache cordova.

Phonegap sendiri merupakan framework open source dimana Dengan

menggunakan phonegap kita dapat membuat suatu aplikasi mobile dengan hanya

menggunakan javascript, HTML5 dan CSS3. dan kode pemograman yang kita buat

dapat berguna secara multi platform. Sehingga aplikasi yang kita buat dapat digunakan

ke berbagai macam device dengan os yang berbeda.

Mobile applications are not web applications.

Hal pertama yang harus diperhatikan adalah bahwa aplikasi mobile tidak sama

dengan aplikasi web . Perbedaannya adalah dalam kedua sifat fitur dan jumlah fitur

yang disediakan. Sebuah aplikasi mobile cenderung memiliki fitur yang lebih sedikit.

Kita bisa melihat bahwa aplikasi mobile terlihat sangat berbeda dari aplikasi web .

Pertama , ukuran layar pada smart phone tidak sama dengan desktop. Pada aplikasi web

, di mana layar lebih besar , kita memiliki lebih banyak ruang untuk menu, toolbar , dan

widget.

Pengguna smartphone dan pengguna web memiliki tujuan yang berbeda .

Pengguna smartphone ingin menggunakan aplikasi ini di mana saja, sedangkan

pengguna web mungkin akan menghabiskan lebih banyak waktu dengan menggunakan

aplikasi web di desktop mereka.

Karena perbedaan tersebut, kita akan melihat yang paling produktif (atau paling

sering digunakan) adalah pada smartphone pada smartphone. Pertanyaannya, Apakah

aplikasi mobile menyediakan semua fitur yang ada pada aplikasi web? Tentunya dalam

Page 7: modul gis

4

development, kita akan membuat fitur-fitur apa saja yang paling sering digunakan dan

yang perlu kita tambahkan pada aplikasi mobile.

Dengan phonegap kita dapat memaanfaatkan berbagai macam library yang dapat

digunakan untuk membuat sebuah website seperti Jquery.

Page 8: modul gis

5

PhoneGap Arsitektur

Jquery sendiri merupakan sebuah library javascript open source yang

menekankan interaksi antara javascript dan html. Sehingga website yang kita buat akan

semakin dinamis. Dengan javascript kita dapat menangani event, animasi, efek dan

memproses interaksi ajax. jQuery dirancang sedemikian rupa supaya membuat program

menggunakan Javascript menjadi relatif sangat mudah. Sesuai slogan nya, write less, do

more. Menulis kode lebih sedikit, tetapi melakukan pekerjaan lebih banyak.

Dan untuk pengembangan aplikasi mobile telah memiliki library khusus yang

digunakan untuk mobile user interface. Adalah jquery mobile, pada jquery mobile lebih

ditekankan penggunaan web touch optimized based yang dikususkan untuk penggunaan

smartphone dan computer tablet. Sehingga user interface yang dapat dibuat

menggunakan jquery mobile lebih dinamis , atraktif dan sesuai untuk penggunaan

mobile application.

Page 9: modul gis

6

BAB II INSTALASI

2.1 Java

Tutorial instalasi Java environment untuk mendukung kinerja ADT

1. Pertama-tama siapkan file java environment (32bit/64bit). Kemudian

klik 2x file tersebut

2. Kemudian akan muncul tampilan sebaagai berikut ini, pilih “Next >”

Page 10: modul gis

7

3. Selanjutnya akan tampil pilihan fitur program yang akan diinstall, pilih

“Next >” untuk menggunakan fitur defaultnya dan untuk melanjutkan

4. Installer akan memproses program yang akan digunakan.

5. Setelah proses sebelumnya, maka installer akan muncul tampilan lokasi

penyimpanan program, untuk defaultnya pilih “Next”

Page 11: modul gis

8

6. Instaler kembali akan memproses program dan mengekstrak datanya ke

tempat yang ditujukan sebelumnya

7. Setelah beberapa menit makan proses penginstalan telah selesai pilih

“Close” untuk menutup window installer.

Page 12: modul gis

9

8. Setelah instalasi selesai kita harus menambah environment variable yang

ada pada windows agar eclipse yang akan digunakan berjalan (running).

Untuk menambahnya klik kanan my computer/computer pada windows

explorer lalu klik “Properties”

9. Akan muncul tampilan seperti di bawah ini (windows 7). Lalu pilih

“Advance system settings” yang ada di list sebelah kiri

Page 13: modul gis

10

10. Maka akan muncul lagi window sepeerti di bawah, pilih tab “Advance”

11. Setelah itu pilih “Environment Variabel”

Page 14: modul gis

11

12. Selanjutnya kita harus mengisi variable environment tersebut, dengan

mengisi Variabel name untuk penamaan variabel dan Variabel value

untuk merujuk lokasi java.exe yang di install sebelumnya. Varialbel

name diisi dengan “Java” dan untuk variable value kita buka dulu

tempat penyimpanan java environment yang di install sebelumnya.

Page 15: modul gis

12

13. Untuk mengisi variabel value maka kita harus membuka lokasi

penyimpanan java environment yang di install tadi lalu pastekan link

tempat tersimpannya program ke field pada gambar sebelumnya.

14. Untuk membuka lokasi tersebut lita buka Local Disk (C:) -> Program

File -> Java -> jdk1.7.0->bin->java.exe

Page 16: modul gis

13

Page 17: modul gis

14

15. Tambahkan “\java.exe” pada link yang didapatkan tadi untuk

munujukan lokasi program java.exe yang akan kita gunakan. Klik “OK”

dan instalasi java environment sudah selesai.

Page 18: modul gis

15

2.2 Eclipse

1. Instalasi Eclipse dan Android SDK

a. Untuk memulai mengembangkan aplikasi Mobile disarankan untuk

mendownload bundel ADT (Android Developer Tools) yang

didalamnya terdapat komponen Android SDK dan Eclipse IDE yang

dapat didownload pada laman

http://developer.android.com/sdk/index.html, download sesuai dengan

tipe komputer yang akan digunakan.

Page 19: modul gis

16

b. Setelah selesai di download, ekstrak file hasil download tadi ke

direktori C:\, setelah selesai di ekstrak akan terdapat dua buah folder

yaitu “eclipse” dan “sdk" serta file “SDK Manager.exe”

c. Buka folder “eclipse” dan buka “eclipse.exe”. sampai di sini berarti

eclipse sudah siap untuk digunakan

d. Pilih Help -> Install New Software (Pada proses ini dibutuhkan

koneksi internet)

e. Klik tombol Add dan isikan pada kolom Name dengan ADT dan

kolom Location dengan https://dl-ssl.google.com/android/eclipse/. Url

tersebut merupakan library resmi dari Google yang berisi banyak

fitur-fitur plugin untuk Eclipse. Dua isi plugin ADT dari situs tersebut

berisi Developer Tools dan NDK Plugin

Page 20: modul gis

17

f. Setelah itu muncul beberapa checklist, centang pada bagian

“Developer Tools” dan “NDK Plugin” kemudian klik tombol Next

g. Kemudian klik tombol Next dan selanjutkan pilih “I Accept the terms

of the lisence agreements” dan klik tombol Finish dan lanjutkan

Page 21: modul gis

18

instalasi hingga selesai. Setelah selesai restart ADT untuk lanjut ke

proses selanjutnya.

h. Kemudian klik ikon “Android SDK Manager” untuk mendownload

tool Android SDK yang merupakan API untuk pengembangan aplikasi

platform android.

i. Centang pada list folder Tools beserta android API yang akan

digunakan. Di sini android API yang digunakan yaitu Android 4.0

(API 14) serta Android 2.3.3 (API 10). Kemudian klik tombol Install

packages...

Page 22: modul gis

19

j. Selanjutnya pilih Accept License dan tekan tombol Install dan tunggu

sampai proses ini selesai.

2. Pemasangan plugin phonegap MDS Applaud di Eclipse

MDS Applaud memanfaatkan Android Development Tools dan PhoneGap

untuk menyediakan sebuah IDE yang sangat komprehensif ditujukan untuk

Page 23: modul gis

20

pengembangan aplikasi Android menggunakan yang menggunakan aplikasi

Eclipse

Langkah instalasi dari MDS Applaud yaitu :

a. Pada Eclipse, Pilih Help -> Install New Software

b. Pilh Add untuk menambahkan plugin MDS Applaud. Pada langkah ini

dibutuhkan koneksi internet untuk mendownload plugin MDS

Applaud. Pada kolom Name diisi dengan “MDS Applaud”, pada

Location diisi dengan alamat

http://svn.codespot.com/a/eclipselabs.org/mobile-web-development-

with-phonegap/tags/r1.2/download

c. Centang “MDS AppLaud” pada checklist, kemudian Next, kemudian

tunggu beberapa menit sampai ke langkah selanjutnya

Page 24: modul gis

21

d. Langkah selanjutnya tekan Next

e. Kemudian klik pada “I Accept the terms of the lisence agreements “

dan klik Finish, dan tunggu sampai proses ini selesai.

Page 25: modul gis

22

f. Jika pemasangan berhasil akan muncul ikon MDS Applaud untuk

memulai membuat project dengan phonegap

2.3 Membuat AVD

Untuk dapat menjalankan project yang telah kta buat ke dalam android device,

kita perlu mengubah project kita yang berbasis html ke bentuk native apps dengan

bantuan phonegap, sebelumnya kita akan membuat Android Virtual Device di eclipse

untuk debugging aplikasi yang kita buat apakah berjalan lancer atau tidak

1. Buka Eclipse IDE, click toolbar android AVD

Page 26: modul gis

23

2. Pada window yang tampil, karena kita belum memiliki AVD sebelumnya,

click new

3. Kemudian kita atur spesifikasi AVD kita, pada kolom AVD Name isikan

nama AVD kita misalnya “Adroid”

4. Untuk Device, kita bias pilih sesuai keinginan, namun agar dapat

memastikan applikasi kita dapat berjalan baik di semua varian android

device, kita pilih device yang banyak dipakai user,misalnya 3.7” WVGA

(400X800)

5. Target kita pilih Android 2.3.3

6. Sisanya biarkan default dan click OK

Page 27: modul gis

24

2.4 BlueStack

1. Pertama-tama instal dulu BlueStacks-nya yang telah disediakan, dengan

cara klik 2x

2. Setelah di klik 2x maka installer akan menampilkan persetujuan sebagai

berikut

centang “I Accept the Term in Th License Agreement”. Dan kemudian klik

tombol “Next” yang sudah aktif setelah di centang.

Page 28: modul gis

25

3. Setelah di klik “Next” maka akan tampil pilihan fitur dari bluestack, kita

abaikan saja lalu klik “install”

4. Tunggu proses instalasi sampai selesai.

5. Setelah proses selesai maka akan muncul tampilan sebagai berikut, klik

“Finish”

Page 29: modul gis

26

6. Setelah proses instalasi selesai, maka akan muncul tampilan bluestack

(virtual android) yang akan kita gunakan. Pilih saja salah satu tema yang

akan digunakan.

7. Maka tampilan tema sudah tampil, untuk mengeluarkan tema klik tombol menu

yang ada disebelah kanan.

Page 30: modul gis

27

8. Setelah itu akan muncul menu yang ada di dalam bluestack.

Page 31: modul gis

28

BAB III PEMBUATAN APLIKASI

Langkah pertama untuk membuat aplikasi PhoneGap adalah untuk setup Mobile

Development Environment. Kita akan mulai dengan Android.

Kita perlu menginstal aplikasi berikut di desktop untuk Development Android :

1 JDK 7u25 atau yang lebih baru

2 Eclipse

3 Android SDK dengan platform Android 2.2 atau yang lebih baru

4 Android ADT plugin untuk Eclipse atau Bluestack

5 Android AVD untuk Android 2.2 atau yang lebih baru

6 PhoneGap 2.9.0 (atau yang lebih baru)

Karena Android di program di Java , kita perlu Java Development Kit dan

Eclipse. Kita kemudian akan menginstal Android System Development Kit . Android

SDK adalah SDK generik dan tidak datang dengan dukungan untuk platform apapun .

Sebuah platform android adalah versi OS , misalnya 2.2 Froyo , 2.3 Ginger Bread , dan

4.3 Jelly Bean. Platform ini perlu didownload untuk membuat , membangun, dan

menjalankan project Android . Plugin ini disebut ADT Plugin Android.

Setelah Eclipse , Android SDK , dan Android ADT ( Eclipse Plugin ) semua

sudah siap, kita perlu membuat Emulator untuk Android . Hal ini disebut Android AVD

( Android Virtual Device ) . Jika kita sedang mengembangkan sebuah aplikasi

PhoneGap untuk Android yang menargetkan 2,2 Froyo , kita membutuhkan AVD dari

platform Android yang sama .

3.1 Build Project

Membuat sebuah aplikasi mobile ada dua cara yaitu menggunakan adobe

Phonegap Build dan MDS Applaud.

3.1.1 Dengan Adobe PhoneGap Build

1. Pastikan Anda sudah memiliki akun Github dan menyimpan source code

anda di Github.

Page 32: modul gis

29

2. Masuk ke situs https://build.phonegap.com/ , anda akan melihat tampilan

awal seperti ini

3. Sign dengan menggunakan akun github anda

4. Klik tombol new apps , pilih open-source , dan pilih dari

repository github anda pada input text nya

5. Centang enable debugging, lalu klik Ready to build

Page 33: modul gis

30

6. Tunggu proses build nya. Untuk aplikasi iOs dan Blackberry anda

membutuhkan sertifikat developer agar aplikasi anda mampu berjalan di

platrform ini

7. Setelah selesai akan terlihat seperti ini. Anda hanya perlu menekan tombol

apk (untuk android) untuk mengunduhnya dari Adobe Phonegap Build

3.1.2 Dengan MDS Applaud

1. Buka aplikasi Eclipse. Kemudian klik icon Phonegap .

2. Aturlah sesuai project yang ingin Anda buat. Disarankan menggunakan

cordova terbaru. Klik Next

Page 34: modul gis

31

3. Isikan nama project Anda. Klik Next

4. Pada form selanjutnya disarankan memilih Android versi yang terendah.

Hal ini dikarenakan project yang Anda buat compatible untuk android versi

tersebut ke atas. Klik Next

5. Selanjutnya Anda harus memasukkan nama aplikasi beserta nama package.

Klik Finish

6. Pada folder aplikasi Anda terdapat tanda silang merah yang menandakan

Error. Hal ini dikarenakan aplikasi Anda tidak mendukung untuk Large

Screen. Oleh karena itu untuk menghilangkannya klik pada folder tersebut,

klik kanan Android Manifest.xml lalu pilih edit with Text Editor

Page 35: modul gis

32

7. Hilangkan script xLargeScreen=”true” lalu Save

8. Buka folder project Anda di lokasi Anda menyimpan folder tersebut. Buka

folder asset dan www. Kemudian pada file index.html dapat Anda ubah

dengan script Anda sendiri (dapat ditambahkan dengan file html atau

javascript lainnya).

9. Buka kembali project Anda pada Eclipse.exe ,kemudian klik Run pada

toolbar

10. Jika PC Anda terkoneksi dengan device android yang sudah diatur debug

nya, maka project Anda secara otomatis berjalan di device Anda. Jika tidak,

project tersebut akan berjalan pada simulator.

Page 36: modul gis

33

3.1.3 Tanpa MDS Applaud

1. Create New Project dan pilih new android application project, maka akan

muncul kotak dialog berikut : Isi Application name dengan nama

Workshop. Selanjutnya Isi Package Name dengan

com.siunand.workshop. Pilih Minimum required SDK dengan API 8:

Android 2.2 (Froyo), hal ini bertujuan untuk menjadikan applikasi dapat

didukung minimal pada Android versi 2.2 . Pilih Target SDK dengan API

18:Android 4.3 (Jelly Bean). Jika telah selesai klik button Next> (nama

dan pilihan dapat disesuaikan menurut keinginan developer).

Page 37: modul gis

34

2. Selanjutnya akan timbul kotak dialog seperti gambar berikut. Gunakan

pengaturan default dan klik button Next >

3. Tahap selanjutnya adalah import icon untuk applikasi yang kita buat atau

bisa gunakan pengaturan icon yang telah disediakan software ecclipse. Lalu

Page 38: modul gis

35

klik button Next >

4. Selanjutnya akan muncul kotak dialog Create Activity lalu pilih Blank

Activity. Selanjutnya klik button Next >.

Page 39: modul gis

36

5. Pada kotak dialog Blank Activity gunakan activity name dan Layout Name

default. klik button Finish.

6. Maka dengan begitu kita telah membuat project baru dengan nama

Workshop. Tampilan viusal wilayah kerja kita adalah sebagai berikut :

Page 40: modul gis

37

7. Langkah berikutnya adalah copy file cordova-2.9.0.jar yang terletak pada

directory phonegap-2.9.0\lib\android.

Page 41: modul gis

38

8. Lalu Paste pada Package Explorer-> Workshop(nama project)/libs.

9. Klik kanan pada file cordova-2.9.0.jar yang telah kita paste pada folder libs,

lalu pilih Build Path -> Add to Build Path. Lihat gambar berikut :

Page 42: modul gis

39

10. Maka pada Referenced Libraries akan muncul file cordova-2.9.0.jar seperti

gambar berikut:

11. Langkah berikutnya adalah copy folder xml yang terletak pada directory

phonegap-2.9.0\lib\android.

Page 43: modul gis

40

12. Lalu Paste pada Package Explorer-> Workshop/res.

13. Edit androidmanifest.xml dengan cara klik kanan pilih open with-> Text

Editor, Seperti gamabar berikut :

Page 44: modul gis

41

14. Lalu copy script berikut :

<supports-screens

android:largeScreens="true"

android:normalScreens="true"

android:smallScreens="true"

android:resizeable="true"

android:anyDensity="true" />

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

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

<uses-permission

android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission

android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission

android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMAN

DS" />

<uses-permission

android:name="android.permission.READ_PHONE_STATE" />

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

/>

<uses-permission

android:name="android.permission.RECEIVE_SMS" />

<uses-permission

android:name="android.permission.RECORD_AUDIO" />

<uses-permission

android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

Page 45: modul gis

42

<uses-permission

android:name="android.permission.READ_CONTACTS" />

<uses-permission

android:name="android.permission.WRITE_CONTACTS" />

<uses-permission

android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission

android:name="android.permission.ACCESS_NETWORK_STATE" />

Paste pada bagian berikut :

Dan Copy script berikut :

android:configChanges="orientation|screenSize|keyboardHidden"

paste pada bagian seperti pada gambar berikut :

Page 46: modul gis

43

15. edit MainActivity.java dengan cara klik kanan pada

workshop/src/com.siunand.workshop/ MainActivity.java pilih open with->

Text Editor, Seperti gamabar berikut :

16. Lalu copy script berikut :

import org.apache.cordova.*;

public class MainActivity extends DroidGap {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

super.loadUrl("file:///android_asset/www/index.html");

}

}

Kemudian paste pada bagian berikut :

Page 47: modul gis

44

17. Selanjutnya adalah buat folder baru pada Package Explorer ->

Workshop/assets dengan cara klik kanan pada assets->new->folder.

Perhatikan gambar berikut:

Page 48: modul gis

45

18. Selanjutnya akan muncul kotak dialog seperti gambar dibawah ini. Isi

folder name dengan www, folder ini berguna untuk tempat mengimport file

aplikasi mobile.

19. Kemudian kita import file cordova.js kedalam folderr www yang baru kita

buat. Caranya adalah copy file cordova.js dan paste pada folder www

tersebut

20. Proses persiapan project untuk aplikasi phonegap telah selesai kita lakukan.

Page 49: modul gis

46

3.2 Membangun aplikasi mobile GIS

Konsep dari program nya :

1. Mobile app yang dibuat menggunakan jQuery, jQuery mobile, dan

phonegap.

2. Mobile app yang dibuat merupakan single page template dengan panel, bisa

melakukan pencarian terhadap data spatial sama seperti GIS desktop dengan

database yang sama. Pemanggilan data melalui ajax dan json.

3. Mobile app bisa melakukan pencarian berdasarkan nama tempat, kategori,

dan radius dari gps(dari real lokasi dimana kita berada).

4. Hasil dari pencarian berupa marker yang ada di map dan detail tempat yang

dicari berisi nama tempat, alamat, deskripsi, dan image.

5. Mobile app bisa melakukan get direction melalui google direction service

(mengetahui rute jalan yang akan dilewati ke tempat tujuan yang telah

dicari) dengan 4 metode driving, walking, bicycle, transit. Get direction ini

nantinya juga menghitung berapa jarak ke tempat tujuan, alternative route,

dan waktu yang dibutuhkan ke tempat tujuan berdasarkan 4 metode diatas.

Berikut ini merupakan script untuk membuat base halaman dengan panel.

1. index.html

Merupakan file utama yang akan dijalankan oleh program ketika dieksekusi.

Membuat html program :

<!DOCTYPE html>

<html>

<head>

<title>GIS Project</title>

<meta name="viewport" content="width=device-width,

initial-scale=1">

<script type="text/javascript" src="cordova.js"></script>

<script type="text/javascript"

src="https://maps.googleapis.com/maps/api/js?sensor=true"></script

>

<link rel="stylesheet" type="text/css"

href="stylemobile.css">

<link rel="stylesheet" href="jquery.mobile-1.3.2.min.css">

<script src="jquery-1.9.1.min.js"></script>

<script src="jquery.mobile-1.3.2.min.js"></script>

</head>

<body onload="initialize()">

<div data-role="page">

<div data-role="header" data-position="fixed">

Page 50: modul gis

47

<a href="#searchpanel" data-icon="bars" data-

iconpos="notext">Search Panel</a>

<a href="#setting" data-icon="gear" data-

iconpos="notext">Setting</a>

<h1>Workshop GIS</h1></div>

<div id="map-canvas" data-role="content"></div>

<div data-role="footer" data-

position="fixed"><h1>Copyright © 2013 SI UNAND</h1></div>

<div data-role="panel" id="searchpanel" data-

display="push" data-position="left"><br><br>

<div id="divpilihan">

<button id="pilihantext" data-icon="search">Cari

Text</button><br>

<button id="pilihanradius" data-icon="search">Cari

Radius</button><br>

<button id="pilihankategori" data-icon="search">Cari

Kategori</button>

</div>

<div id="divcaritext">

<input type="search" id="inputcari"

name="inputcari">

<button id="buttoncaritext" data-

icon="search">Cari</button>

<button class="back" data-icon="arrow-

l">Back</button>

</div>

<div id="divcariradius">

<select id="selecttipe2"></select>

<select id="selectjenis2"></select>

<label for="inputradius">Radius (km)</label>

<input type="range" id="inputradius"

name="inputradius" data-highlight="true" min="1" max="20"

value="5">

<button id="buttoncariradius" data-

icon="search">Cari</button>

<button class="back" data-icon="arrow-l">Back</button>

</div>

<div id="divcarikategori">

<select id="selecttipe"></select>

<select id="selectjenis"></select>

<button id="buttoncarikategori" data-

icon="search">Cari</button>

<button class="back" data-icon="arrow-

l">Back</button>

</div>

<div id="divhasil"><div id="collapsibleset" data-

role="collapsible-set" data-theme="c" data-content-theme="d" data-

collapsed-icon="arrow-r" data-expanded-icon="arrow-d"></div>

<button class="back" data-icon="arrow-

l">Back</button></div>

<div id="divdirection"><button class="back" data-

icon="arrow-l">Back</button></div>

</div>

Page 51: modul gis

48

<div data-role="panel" id="setting" data-display="push"

data-position="right"><br><br>

<label for="setserver">Set Server:</label>

<input type="text" name="setserver" id="setserver"

data-clear-btn="true">

<button id="buttonsetserver" onclick="setserver()"

data-icon="gear">Set Server</button>

</div>

</div>

</body>

</html>

2. stylemobile.css

Membuat css program :

#map-canvas {

position: absolute;

top: 0;

bottom: 0;

left: 0;

right: 0;

width: 100%;

height: 100%

}

3. javascript

Membuat javascript program :

1. Global variable

var map;

var markerarray = [];

var infowindow;

var geomarker;

var directionsService;

var directionDisplay;

var server='http://localhost/workshopgis';

var markerarraygeo=[];

var circlearray=[];

var idbuttongetdirection;

var navigasi = false;

var titikawal;

var titikakhir;

2. jquery function

$(function(){

$.ajax({

url: server+'/filltipe.php', data: "", dataType:

'json', success: function(rows)

{

$('#selecttipe').html("");

for (var i in rows)

Page 52: modul gis

49

{

var row = rows[i];

$('#selecttipe').append('<option

value="'+row+'">'+row+'</option>');

}

}

});

$(document).on('change','#selecttipe',function(){

var

tipe=document.getElementById("selecttipe").value;

$.ajax({

url: server+'/filljenis.php?tipe='+tipe+'',

data: "", dataType: 'json', success: function(rows)

{

$('#selectjenis').html("");

for (var i in rows)

{

var row = rows[i];

var idjenis=row.id_jenis;

var jenis=row.jenis;

$('#selectjenis').append('<option

value="'+idjenis+'">'+jenis+'</option>');

}

}

});

});

$.ajax({

url: server+'/filltipe.php', data: "", dataType:

'json', success: function(rows)

{

$('#selecttipe2').html("");

for (var i in rows)

{

var row = rows[i];

$('#selecttipe2').append('<option

value="'+row+'">'+row+'</option>');

}

}

});

$(document).on('change','#selecttipe2',function(){

var

tipe=document.getElementById("selecttipe2").value;

$.ajax({

url: server+'/filljenis.php?tipe='+tipe+'',

data: "", dataType: 'json', success: function(rows)

{

$('#selectjenis2').html("");

for (var i in rows)

{

var row = rows[i];

var idjenis=row.id_jenis;

var jenis=row.jenis;

$('#selectjenis2').append('<option

value="'+idjenis+'">'+jenis+'</option>');

}

}

});

});

Page 53: modul gis

50

$("#divcaritext").css("display","none");

$("#divcariradius").css("display","none");

$("#divcarikategori").css("display","none");

$("#divhasil").css("display","none");

$("#divdirection").css("display","none");

$("#pilihantext").click(function(){

$("#divpilihan").slideUp();

$("#divcaritext").slideDown();

});

$("#pilihanradius").click(function(){

$("#divpilihan").slideUp();

$("#divcariradius").slideDown();

});

$("#pilihankategori").click(function(){

$("#divpilihan").slideUp();

$("#divcarikategori").slideDown();

});

$(".back").click(function(){

$("#divcaritext").slideUp();

$("#divcariradius").slideUp();

$("#divhasil").slideUp();

$("#divdirection").slideUp();

$("#divcarikategori").slideUp();

$("#paneldirection").slideUp();

$("#divpilihan").slideDown();

$("#collapsibleset").html("");

$("#paneldirection").html("");

$(".ui-popup-container").html("");

navigasi=false;

clearmarker();

clearcircle();

clearroute();

});

$("#buttoncaritext").click(function(){

$("#divcaritext").slideUp();

$("#divhasil").slideDown();

loadcaritext();

});

$("#buttoncariradius").click(function(){

$("#divcariradius").slideUp();

$("#divhasil").slideDown();

loadcariradius();

});

$("#buttoncarikategori").click(function(){

$("#divcarikategori").slideUp();

$("#divhasil").slideDown();

loadcarikategori();

});

});

3. load basemap

function basemap() {

Page 54: modul gis

51

var posisiawal=new google.maps.LatLng(-0.914573,100.348907);

var mapOptions = {

center: posisiawal,

zoom: 12,

mapTypeId: google.maps.MapTypeId.ROADMAP

};

map = new google.maps.Map(document.getElementById("map-

canvas"),mapOptions);

}

4. Geolocation

function geolocation(){

var options = { enableHighAccuracy: true };

navigator.geolocation.watchPosition(geolocationSuccess,

geolocationError, options);

}

function geolocationSuccess(posisi){

clearmarkergeo();

var pos=new

google.maps.LatLng(posisi.coords.latitude,posisi.coords.

longitude);

geomarker = new google.maps.Marker({

map: map,

position: pos

});

markerarraygeo.push(geomarker);

map.panTo(pos);

if (navigasi===true)

{

$('#paneldirection').html("");

clearroute();

clearmarkergeo();

titikawal=new

google.maps.LatLng(posisi.coords.latitude,posisi.coords.

longitude);

calcRoute(titikawal,titikakhir);

}

}

function geolocationError(err){

alert("please enable your gps");

}

5. Set Server

function setserver(){

server='http://'+document.getElementById('setserver').value+'

/workshopgis';

$.ajax({

url: server+'/filltipe.php', data: "", dataType: 'json',

success: function(rows)

{

$('#selecttipe').html("");

Page 55: modul gis

52

for (var i in rows)

{

var row = rows[i];

$('#selecttipe').append('<option

value="'+row+'">'+row+'</option>');

}

}

});

$(document).on('change','#selecttipe',function(){

var tipe=document.getElementById("selecttipe").value;

$.ajax({

url: server+'/filljenis.php?tipe='+tipe+'', data: "",

dataType: 'json', success: function(rows)

{

$('#selectjenis').html("");

for (var i in rows)

{

var row = rows[i];

var idjenis=row.id_jenis;

var jenis=row.jenis;

$('#selectjenis').append('<option

value="'+idjenis+'">'+jenis+'</option>');

}

}

});

});

$.ajax({

url: server+'/filltipe.php', data: "", dataType: 'json',

success: function(rows)

{

$('#selecttipe2').html("");

for (var i in rows)

{

var row = rows[i];

$('#selecttipe2').append('<option

value="'+row+'">'+row+'</option>');

}

}

});

$(document).on('change','#selecttipe2',function(){

var tipe=document.getElementById("selecttipe2").value;

$.ajax({

url: server+'/filljenis.php?tipe='+tipe+'', data: "",

dataType: 'json', success: function(rows)

{

$('#selectjenis2').html("");

for (var i in rows)

{

var row = rows[i];

var idjenis=row.id_jenis;

var jenis=row.jenis;

$('#selectjenis2').append('<option

value="'+idjenis+'">'+jenis+'</option>');

}

}

});

});

$('#setting').panel( "close" );

Page 56: modul gis

53

}

6. Initialize map

function initialize() {

geolocation();

basemap();

}

7. Pencarian Text

function loadcaritext(){

var

inputcari=document.getElementById("inputcari").value;

if(inputcari==="")

{

alert("isi data yang akan dicari");

$("#divhasil").slideUp();

$("#divcaritext").slideDown();

}

else

{

var script = document.createElement('script');

script.src =

server+'/searchtext.php?cari='+inputcari+'';

document.getElementsByTagName('head')[0].appendChild(scr

ipt);

}

}

8. Pencarian kategori

function loadcarikategori(){

var

selectjenis=document.getElementById("selectjenis").value

;

if(selectjenis==="")

{

alert("Pilih jenis yang akan dicari");

$("#divhasil").slideUp();

$("#divcarikategori").slideDown();

}

else

{

var script = document.createElement('script');

script.src =

server+'/searchkategori.php?jenis='+selectjenis+'';

document.getElementsByTagName('head')[0].appendChild(scr

ipt);

}

}

Page 57: modul gis

54

9. Pencarian Radius

function loadcariradius(){

var

inputradius=document.getElementById("inputradius").value

;

var

selectjenis=document.getElementById("selectjenis2").valu

e;

if(selectjenis==="")

{

alert("Pilih jenis yang akan dicari");

$("#divhasil").slideUp();

$("#divcarikategori").slideDown();

}

navigator.geolocation.getCurrentPosition(function

(position) {

var script = document.createElement('script');

script.src =

server+'/searchradius.php?lat='+position.coords.latitude

+'&lng='+position.coords.longitude+'&radius='+inputradiu

s+'&jenis='+selectjenis+'';

document.getElementsByTagName('head')[0].appendChild(scr

ipt);

var circle = new google.maps.Circle({

center: new

google.maps.LatLng(position.coords.latitude,position.coo

rds.longitude),

radius: parseFloat(inputradius*1000),

map: map,

strokeColor: "#FC0808",

strokeOpacity: 0.5,

strokeWeight: 2,

fillColor: "#FC0808",

fillOpacity: 0.2

});

circlearray.push(circle);

});

Page 58: modul gis

55

}

10. Load Detail, marker dan infowindow

function loaddata(results){

if(results.features === null)

{

alert("Data yang dicari tidak ada");

}

else

{

for (var i = 0; i < results.features.length; i++) {

var data = results.features[i];

var koordinat = data.geometry.coordinates;

var id=data.properties.id;

var nama = data.properties.nama;

var alamat= data.properties.alamat;

var deskripsi=data.properties.deskripsi;

var latLng = new

google.maps.LatLng(koordinat[1],koordinat[0]);

var gambar=data.properties.image;

$('#collapsibleset').append('<div id="div'+id+'"

class="collapsible"><h3>'+nama+'</h3><p

id="palamat">'+alamat+'</p><p id="pgambar"></p><p>Travel

Mode : <select id="travelmode"><option

value="DRIVING">Driving</option><option

value="WALKING">Walking</option><option

value="BICYCLING">Bicycling</option><option

value="TRANSIT">Transit</option></select></p><button

id="'+i+'" class="buttongetdirection">Get

Direction</button></div>');

$('.collapsible').collapsible();

$('.buttongetdirection').button();

if(deskripsi!==null)

{

$('#palamat').append('<p>'+deskripsi+'</p>');

}

if(gambar!==null){

for(var g = 0; g < gambar.length; g++){

var n=i+''+g;

$('#div'+id+' #pgambar').append('<a

href="#popup'+n+'" data-rel="popup" data-position-

to="window" data-transition="fade"><img class="popphoto"

src="'+server+'/img/'+gambar[g]+'"

style="width:80%"></a><div data-role="popup"

id="popup'+n+'" data-overlay-theme="a" data-theme="d"

data-corners="false"><img class="popphoto"

src="'+server+'/img/'+gambar[g]+'" style="max-

height:80%;"></div>');

$('#popup'+n+'').popup();

}

}

createInfoWindow(latLng, nama, alamat, deskripsi);

}

$('.buttongetdirection').click(function(){

$("#divhasil").slideUp();

$("#divdirection").slideDown();

Page 59: modul gis

56

$("#divdirection").prepend('<div

id="paneldirection"></div>');

idbuttongetdirection=this.id;

titikawal=geomarker.getPosition();

titikakhir=markerarray[idbuttongetdirection].getPosition

();

calcRoute(titikawal,titikakhir);

clearmarker();

clearmarkergeo();

clearcircle();

navigasi=true;

});

}

}

function createInfoWindow(latLng, nama, alamat, deskripsi)

{

var marker = new google.maps.Marker({

position: latLng,

map: map

});

markerarray.push(marker);

infowindow = new google.maps.InfoWindow();

var isiinfowindow="<b><h2>"+nama+"</h2></b>Alamat :

<br><br>"+alamat+"<br><br>Keterangan :

<br><br>"+deskripsi;

google.maps.event.addListener(marker, 'click',

function() {

infowindow.setContent(isiinfowindow);

infowindow.open(map, marker);

});

}

11. Direction Service

function calcRoute(start, end) {

var travelmode =

document.getElementById("travelmode").options[document.g

etElementById("travelmode").selectedIndex].value;

directionsService = new

google.maps.DirectionsService();

var request = {

origin:start,

destination:end,

travelMode: google.maps.TravelMode[travelmode],

unitSystem: google.maps.UnitSystem.METRIC,

provideRouteAlternatives: true

};

directionsService.route(request, function(response,

status) {

if (status == google.maps.DirectionsStatus.OK) {

directionsDisplay.setOptions({ preserveViewport:

true });

directionsDisplay.setDirections(response);

}

});

Page 60: modul gis

57

directionsDisplay = new

google.maps.DirectionsRenderer();

directionsDisplay.setMap(map);

directionsDisplay.setPanel(document.getElementById('pane

ldirection'));

}

12. Clear Marker, clear circle dan clear direction

function clearmarker(){

for (var i = 0; i < markerarray.length; i++) {

markerarray[i].setMap(null);

}

markerarray=[];

}

function clearmarkergeo(){

for (var i = 0; i < markerarraygeo.length; i++) {

markerarraygeo[i].setMap(null);

}

markerarraygeo=[];

}

function clearroute(){

directionsDisplay.setMap(null);

}

function clearcircle(){

for(var i=0;i<circlearray.length;i++)

{

circlearray[i].setMap(null);

}

circlearray=[];

}

Struktur Program :

Page 61: modul gis

58

Complete Source Code Program :

<!DOCTYPE html>

<html>

<head>

<title>GIS Project</title>

<meta name="viewport" content="width=device-width,

initial-scale=1">

<script type="text/javascript" src="cordova.js"></script>

<script type="text/javascript"

src="https://maps.googleapis.com/maps/api/js?sensor=true"></script

>

<link rel="stylesheet" type="text/css"

href="stylemobile.css">

<link rel="stylesheet" href="jquery.mobile-1.3.2.min.css">

<script src="jquery-1.9.1.min.js"></script>

<script src="jquery.mobile-1.3.2.min.js"></script>

<script type="text/javascript">

//google maps fungsi

var map;

var markerarray = [];

var infowindow;

var geomarker;

var directionsService;

var directionDisplay;

var server='http://localhost/workshopgis';

var markerarraygeo=[];

var circlearray=[];

var idbuttongetdirection;

var navigasi = false;

var titikawal;

var titikakhir;

$(function(){

$.ajax({

url: server+'/filltipe.php', data: "", dataType:

'json', success: function(rows)

{

$('#selecttipe').html("");

for (var i in rows)

{

var row = rows[i];

$('#selecttipe').append('<option

value="'+row+'">'+row+'</option>');

}

}

});

$(document).on('change','#selecttipe',function(){

var tipe=document.getElementById("selecttipe").value;

$.ajax({

url: server+'/filljenis.php?tipe='+tipe+'', data: "",

dataType: 'json', success: function(rows)

{

$('#selectjenis').html("");

for (var i in rows)

{

var row = rows[i];

var idjenis=row.id_jenis;

Page 62: modul gis

59

var jenis=row.jenis;

$('#selectjenis').append('<option

value="'+idjenis+'">'+jenis+'</option>');

}

}

});

});

$.ajax({

url: server+'/filltipe.php', data: "", dataType:

'json', success: function(rows)

{

$('#selecttipe2').html("");

for (var i in rows)

{

var row = rows[i];

$('#selecttipe2').append('<option

value="'+row+'">'+row+'</option>');

}

}

});

$(document).on('change','#selecttipe2',function(){

var tipe=document.getElementById("selecttipe2").value;

$.ajax({

url: server+'/filljenis.php?tipe='+tipe+'', data: "",

dataType: 'json', success: function(rows)

{

$('#selectjenis2').html("");

for (var i in rows)

{

var row = rows[i];

var idjenis=row.id_jenis;

var jenis=row.jenis;

$('#selectjenis2').append('<option

value="'+idjenis+'">'+jenis+'</option>');

}

}

});

});

$("#divcaritext").css("display","none");

$("#divcariradius").css("display","none");

$("#divcarikategori").css("display","none");

$("#divhasil").css("display","none");

$("#divdirection").css("display","none");

$("#pilihantext").click(function(){

$("#divpilihan").slideUp();

$("#divcaritext").slideDown();

});

$("#pilihanradius").click(function(){

$("#divpilihan").slideUp();

$("#divcariradius").slideDown();

});

$("#pilihankategori").click(function(){

$("#divpilihan").slideUp();

$("#divcarikategori").slideDown();

});

Page 63: modul gis

60

$(".back").click(function(){

$("#divcaritext").slideUp();

$("#divcariradius").slideUp();

$("#divhasil").slideUp();

$("#divdirection").slideUp();

$("#divcarikategori").slideUp();

$("#paneldirection").slideUp();

$("#divpilihan").slideDown();

$("#collapsibleset").html("");

$("#paneldirection").html("");

$(".ui-popup-container").html("");

navigasi=false;

clearmarker();

clearcircle();

clearroute();

});

$("#buttoncaritext").click(function(){

$("#divcaritext").slideUp();

$("#divhasil").slideDown();

loadcaritext();

});

$("#buttoncariradius").click(function(){

$("#divcariradius").slideUp();

$("#divhasil").slideDown();

loadcariradius();

});

$("#buttoncarikategori").click(function(){

$("#divcarikategori").slideUp();

$("#divhasil").slideDown();

loadcarikategori();

});

});

function setserver(){

server='http://'+document.getElementById('setserver').value+'/work

shopgis';

$.ajax({

url: server+'/filltipe.php', data: "", dataType:

'json', success: function(rows)

{

$('#selecttipe').html("");

for (var i in rows)

{

var row = rows[i];

$('#selecttipe').append('<option

value="'+row+'">'+row+'</option>');

}

}

});

$(document).on('change','#selecttipe',function(){

var tipe=document.getElementById("selecttipe").value;

$.ajax({

url: server+'/filljenis.php?tipe='+tipe+'', data: "",

dataType: 'json', success: function(rows)

{

$('#selectjenis').html("");

Page 64: modul gis

61

for (var i in rows)

{

var row = rows[i];

var idjenis=row.id_jenis;

var jenis=row.jenis;

$('#selectjenis').append('<option

value="'+idjenis+'">'+jenis+'</option>');

}

}

});

});

$.ajax({

url: server+'/filltipe.php', data: "", dataType:

'json', success: function(rows)

{

$('#selecttipe2').html("");

for (var i in rows)

{

var row = rows[i];

$('#selecttipe2').append('<option

value="'+row+'">'+row+'</option>');

}

}

});

$(document).on('change','#selecttipe2',function(){

var tipe=document.getElementById("selecttipe2").value;

$.ajax({

url: server+'/filljenis.php?tipe='+tipe+'', data: "",

dataType: 'json', success: function(rows)

{

$('#selectjenis2').html("");

for (var i in rows)

{

var row = rows[i];

var idjenis=row.id_jenis;

var jenis=row.jenis;

$('#selectjenis2').append('<option

value="'+idjenis+'">'+jenis+'</option>');

}

}

});

});

$('#setting').panel( "close" );

}

function initialize() {

geolocation();

basemap();

}

function basemap() {

var posisiawal=new google.maps.LatLng(-0.914573,100.348907);

var mapOptions = {

center: posisiawal,

zoom: 12,

mapTypeId: google.maps.MapTypeId.ROADMAP

};

Page 65: modul gis

62

map = new google.maps.Map(document.getElementById("map-

canvas"),mapOptions);

}

function loadcaritext(){

var inputcari=document.getElementById("inputcari").value;

if(inputcari==="")

{

alert("isi data yang akan dicari");

$("#divhasil").slideUp();

$("#divcaritext").slideDown();

}

else

{

var script = document.createElement('script');

script.src = server+'/searchtext.php?cari='+inputcari+'';

document.getElementsByTagName('head')[0].appendChild(script);

}

}

function loadcarikategori(){

var

selectjenis=document.getElementById("selectjenis").value;

if(selectjenis==="")

{

alert("Pilih jenis yang akan dicari");

$("#divhasil").slideUp();

$("#divcarikategori").slideDown();

}

else

{

var script = document.createElement('script');

script.src =

server+'/searchkategori.php?jenis='+selectjenis+'';

document.getElementsByTagName('head')[0].appendChild(script);

}

}

function loadcariradius(){

var

inputradius=document.getElementById("inputradius").value;

var

selectjenis=document.getElementById("selectjenis2").value;

if(selectjenis==="")

{

alert("Pilih jenis yang akan dicari");

$("#divhasil").slideUp();

$("#divcarikategori").slideDown();

}

navigator.geolocation.getCurrentPosition(function

(position) {

var script = document.createElement('script');

Page 66: modul gis

63

script.src =

server+'/searchradius.php?lat='+position.coords.latitude+'&lng='+p

osition.coords.longitude+'&radius='+inputradius+'&jenis='+selectje

nis+'';

document.getElementsByTagName('head')[0].appendChild(script);

var circle = new google.maps.Circle({

center: new

google.maps.LatLng(position.coords.latitude,position.coords.longit

ude),

radius: parseFloat(inputradius*1000),

map: map,

strokeColor: "#FC0808",

strokeOpacity: 0.5,

strokeWeight: 2,

fillColor: "#FC0808",

fillOpacity: 0.2

});

circlearray.push(circle);

});

}

function loaddata(results){

if(results.features === null)

{

alert("Data yang dicari tidak ada");

}

else

{

for (var i = 0; i < results.features.length; i++) {

var data = results.features[i];

var koordinat = data.geometry.coordinates;

var id=data.properties.id;

var nama = data.properties.nama;

var alamat= data.properties.alamat;

var deskripsi=data.properties.deskripsi;

var latLng = new

google.maps.LatLng(koordinat[1],koordinat[0]);

var gambar=data.properties.image;

$('#collapsibleset').append('<div id="div'+id+'"

class="collapsible"><h3>'+nama+'</h3><p

id="palamat">'+alamat+'</p><p id="pgambar"></p><p>Travel Mode :

<select id="travelmode"><option

value="DRIVING">Driving</option><option

value="WALKING">Walking</option><option

value="BICYCLING">Bicycling</option><option

value="TRANSIT">Transit</option></select></p><button id="'+i+'"

class="buttongetdirection">Get Direction</button></div>');

$('.collapsible').collapsible();

$('.buttongetdirection').button();

if(deskripsi!==null)

{

$('#palamat').append('<p>'+deskripsi+'</p>');

}

if(gambar!==null){

for(var g = 0; g < gambar.length; g++){

var n=i+''+g;

Page 67: modul gis

64

$('#div'+id+' #pgambar').append('<a

href="#popup'+n+'" data-rel="popup" data-position-to="window"

data-transition="fade"><img class="popphoto"

src="'+server+'/img/'+gambar[g]+'" style="width:80%"></a><div

data-role="popup" id="popup'+n+'" data-overlay-theme="a" data-

theme="d" data-corners="false"><img class="popphoto"

src="'+server+'/img/'+gambar[g]+'" style="max-

height:80%;"></div>');

$('#popup'+n+'').popup();

}

}

createInfoWindow(latLng, nama, alamat, deskripsi);

}

$('.buttongetdirection').click(function(){

$("#divhasil").slideUp();

$("#divdirection").slideDown();

$("#divdirection").prepend('<div

id="paneldirection"></div>');

idbuttongetdirection=this.id;

titikawal=geomarker.getPosition();

titikakhir=markerarray[idbuttongetdirection].getPosition();

calcRoute(titikawal,titikakhir);

clearmarker();

clearmarkergeo();

clearcircle();

navigasi=true;

});

}

}

function calcRoute(start, end) {

var travelmode =

document.getElementById("travelmode").options[document.getElementB

yId("travelmode").selectedIndex].value;

directionsService = new google.maps.DirectionsService();

var request = {

origin:start,

destination:end,

travelMode: google.maps.TravelMode[travelmode],

unitSystem: google.maps.UnitSystem.METRIC,

provideRouteAlternatives: true

};

directionsService.route(request, function(response, status)

{

if (status == google.maps.DirectionsStatus.OK) {

directionsDisplay.setOptions({ preserveViewport: true });

directionsDisplay.setDirections(response);

}

});

directionsDisplay = new google.maps.DirectionsRenderer();

directionsDisplay.setMap(map);

directionsDisplay.setPanel(document.getElementById('paneldirection

'));

}

function clearmarker(){

Page 68: modul gis

65

for (var i = 0; i < markerarray.length; i++) {

markerarray[i].setMap(null);

}

markerarray=[];

}

function clearmarkergeo(){

for (var i = 0; i < markerarraygeo.length; i++) {

markerarraygeo[i].setMap(null);

}

markerarraygeo=[];

}

function clearroute(){

directionsDisplay.setMap(null);

}

function clearcircle(){

for(var i=0;i<circlearray.length;i++)

{

circlearray[i].setMap(null);

}

circlearray=[];

}

function createInfoWindow(latLng, nama, alamat, deskripsi)

{

var marker = new google.maps.Marker({

position: latLng,

map: map

});

markerarray.push(marker);

infowindow = new google.maps.InfoWindow();

var isiinfowindow="<b><h2>"+nama+"</h2></b>Alamat :

<br><br>"+alamat+"<br><br>Keterangan : <br><br>"+deskripsi;

google.maps.event.addListener(marker, 'click',

function() {

infowindow.setContent(isiinfowindow);

infowindow.open(map, marker);

});

}

function geolocation(){

var options = { enableHighAccuracy: true };

navigator.geolocation.watchPosition(geolocationSuccess,

geolocationError, options);

}

function geolocationSuccess(posisi){

clearmarkergeo();

var pos=new

google.maps.LatLng(posisi.coords.latitude,posisi.coords.longitude)

;

geomarker = new google.maps.Marker({

map: map,

position: pos

Page 69: modul gis

66

});

markerarraygeo.push(geomarker);

map.panTo(pos);

if (navigasi===true)

{

$('#paneldirection').html("");

clearroute();

clearmarkergeo();

titikawal=new

google.maps.LatLng(posisi.coords.latitude,posisi.coords.longitude)

;

calcRoute(titikawal,titikakhir);

}

}

function geolocationError(err){

alert("please enable your gps");

}

</script>

</head>

<body onload="initialize()">

<div data-role="page">

<div data-role="header" data-position="fixed">

<a href="#searchpanel" data-icon="bars" data-

iconpos="notext">Search Panel</a>

<a href="#setting" data-icon="gear" data-

iconpos="notext">Setting</a>

<h1>Workshop GIS</h1></div>

<div id="map-canvas" data-role="content"></div>

<div data-role="footer" data-

position="fixed"><h1>Copyright © 2013 SI UNAND</h1></div>

<div data-role="panel" id="searchpanel" data-

display="push" data-position="left"><br><br>

<div id="divpilihan">

<button id="pilihantext" data-icon="search">Cari

Text</button><br>

<button id="pilihanradius" data-icon="search">Cari

Radius</button><br>

<button id="pilihankategori" data-icon="search">Cari

Kategori</button>

</div>

<div id="divcaritext">

<input type="search" id="inputcari"

name="inputcari">

<button id="buttoncaritext" data-

icon="search">Cari</button>

<button class="back" data-icon="arrow-

l">Back</button>

</div>

<div id="divcariradius">

<select id="selecttipe2"></select>

<select id="selectjenis2"></select>

<label for="inputradius">Radius (km)</label>

<input type="range" id="inputradius"

name="inputradius" data-highlight="true" min="1" max="20"

value="5">

Page 70: modul gis

67

<button id="buttoncariradius" data-

icon="search">Cari</button>

<button class="back" data-icon="arrow-l">Back</button>

</div>

<div id="divcarikategori">

<select id="selecttipe"></select>

<select id="selectjenis"></select>

<button id="buttoncarikategori" data-

icon="search">Cari</button>

<button class="back" data-icon="arrow-

l">Back</button>

</div>

<div id="divhasil"><div id="collapsibleset" data-

role="collapsible-set" data-theme="c" data-content-theme="d" data-

collapsed-icon="arrow-r" data-expanded-icon="arrow-d"></div>

<button class="back" data-icon="arrow-

l">Back</button></div>

<div id="divdirection"><button class="back" data-

icon="arrow-l">Back</button></div>

</div>

<div data-role="panel" id="setting" data-display="push"

data-position="right"><br><br>

<label for="setserver">Set Server:</label>

<input type="text" name="setserver" id="setserver"

data-clear-btn="true">

<button id="buttonsetserver" onclick="setserver()"

data-icon="gear">Set Server</button>

</div>

</div>

</body>

</html>

File stylemobile.css

#map-canvas {

position: absolute;

top: 0;

bottom: 0;

left: 0;

right: 0;

width: 100%;

height: 100%

}

Page 71: modul gis

68

3.3.1 Tampilan Program

1. Tampilan Awal

2. Set server

Page 72: modul gis

69

3. Panel dengan pilihan pencarian

4. Pencarian Text

Page 73: modul gis

70

5. Pencarian Radius

6. Pencarian Kategori

Page 74: modul gis

71

7. Hasil Pencarian

8. Get Direction

Page 75: modul gis

72

BAB IV KESIMPULAN

Untuk membuat sebuah aplikasi berbasis mobile khususnya Mobile GIS

Application terdapat beberapa langkah-langkah yang harus dilakukan untuk

mengembangkannya. Serorang developers akan membutuhkan JDK, Eclipse sebagai

IDE, Android SDK dengan platform Android 2.2 atau yang lebih baru, Android ADT

plugin untuk Eclipse atau Bluestack, Android AVD untuk Android 2.2 atau yang lebih

baru, dan PhoneGap 2.9.0 (atau yang lebih baru) untuk mengembangkan atau

membangun sebuah aplikasi berbasis mobile, khususnya mobile dengan system operasi

android yang sedang diminati banyak kalangan saat ini. Seorang developers yang akan

membangun sebuah aplikasi mobile, pengembang juga harus memahami jQuery,

terutama jQuery mobile, untuk membuat aplikasi yang lebih interaktif.

Page 76: modul gis

73

DAFTAR KEPUSTAKAAN

Gathol, Rohit, dan Yogesh Patel. 2012. Beginning PhoneGap Mobile Framework for Javascript

dan HTML5. New York : Apress.

Mobile Developer Solutions, “Get Started with Applaud”, diakses dari laman

http://www.mobiledevelopersolutions.com/home/start, tanggal 25 Oktober 2013.

Muhammad K Huda, “Instalasi ADT Untuk Eclipse”, diakses dari laman

http://mkhuda.com/teknologi/instalasi-adt-untuk-eclipse/, tanggal 25 Oktober 2013

Muhammad K Huda, “Memasang Plugin Phonegap MDS Applaud di Eclipse, diakses dari laman

http://mkhuda.com/teknologi/memasang-plugin-phonegap-mds-applaud-di-eclipse/,

tanggal 25 Oktober 2013.