SlideShare a Scribd company logo
Membuat Peta Interaktif
Jumlah Penduduk Indonesia
Pada era internet sekarang ini, WebGIS memegang peranan
penting dalam visualisasi data. Dengan menggunakan peta
yang terhubug pada jaringan internet, maka informasi yang ada
akan menjadi lebih mudah dibaca dan disebarkan kepada
masyarakat.
Membuat WebGIS
Provinsi
Indonesia
Menggunakan
Google Maps
1 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Daftar Isi
GOOGLE MAPS 2
MEMBUAT WEBGIS PROVINSI INDONESIA MENGGUNAKAN GOOGLE MAPS
JAVASCRIPT V3 API 2
HELLO WORLD 3
MENAMPILKAN POLYGON PROVINSI INDONESIA 6
MASHUP DATA GOOGLE FUSION TABLE DAN SQL 10
MENAMPILKAN PETA TEMATIK 12
SELECT LAYER BY PULAU 17
MENAMPILKAN INFO PROVINSI 20
MEMPERINDAH TAMPILAN 22
2 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Google Maps
Membuat WebGIS Provinsi Indonesia Menggunakan
Google Maps Javascript V3 API
Google Maps Javascript V3 API merupakan layanan dari Google Maps
yang memungkinkan kita untuk memasang peta pada web dengan
menggunakan fitur-fitur dan data yang disediakan oleh Google Maps. Kita
bisa dengan mudah menggunakan peta yang disediakan Google Maps,
sehingga akan memberi kemudahan pada user yang menggunakan peta
karena saat ini masyarakat sudah sangat terbiasa menggunakan Google
Maps dalam keseharian hidup mereka.
Dalam buku ini akan dijelaskan bagaimana untuk membuat suatu
WebGIS menggunakan bantuan Google Maps Javascript V3 API. Kenapa
saya sebutkan Google Maps Javascript V3 API, adalah karena Google
menyediakan juga Google Maps Android API dimana juga merupakan
layanan peta dari Google yang memudahkan kita untuk mengakses peta
menggunakan smartphone.
Sebelum kita membuat suatu WebGIS, mari kita definisikan terlebih
dahulu fungsi apa saja yang aka nada pada WebGIS kita kali ini.
ī‚ˇ Menampilkan Base Map
ī‚ˇ Menampilkan Polygon Provinsi
ī‚ˇ Menampilkan Info Window
ī‚ˇ Menampilkan Select Provinsi
ī‚ˇ Mengambil dan Menampilkan Data SQL
ī‚ˇ Memberi Warna Pada Polygon Provinsi
ī‚ˇ Menampilkan Legenda
Dan tools yang diperlukan dalam membuat WebGIS menggunakan Google
Maps Javascript API adalah sebagai berikut:
ī‚ˇ Text Editor : Disini saya menggunakan Notepad++
ī‚ˇ Browser : Disini saya menggunakan Mozilla Firefox dan Google
Chrome
ī‚ˇ Peta Provinsi Indonesia dalam format KML
ī‚ˇ Web Server Local (saya menggunakan paket XAMPP)
Jika tools dan bahan yang dibutuhkan sudah siap, sekarang mari kita buat
WebGIS Provinsi Indonesia
3 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Hello World
Dalam belajar membuat sesuatu yang berhubungan dengan bahasa
pemrograman, pertama kali biasanya kita membuat suatu Hello World
dengan bahasa pemrograman tertentu. Jika kita belajar Google Maps, kita
membuat Hello World dengan menampilkan peta dari Google Maps itu
sendiri.
Untuk menampilkan peta dari Google Maps Javascript API kita perlu untuk
mendapatkan API key. API key digunakan untuk mengakses peta dan fitur
yang disediakan oleh Google Maps. Untuk mendapatkannya ikuti langkah
berikut:
ī‚ˇ Kunjungi Google APIs Console di https://code.google.com/apis/console
setelah itu login dengan Google Account anda.
ī‚ˇ Pilih APIs & auth pada menu sebelah kiri, Setelah itu pilih APIs
ī‚ˇ Anda akan melihat list API yang disediakan Google, pilih Google
Maps API v3 lalu aktifkan.
ī‚ˇ Pilih credentials pada menu sebelah kiri, setelah itu klik Create New
Key Anda akan melihat bagian Simple API Access, yang akan
digunakan nanti adalah Key for browser apps.
Bagian yang berwarna hijau adalah API Key yang akan anda
gunakan nanti.
4 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Setelah itu mari kita buka Text Editor kita untuk memulai coding, isikan
kode berikut pada Text Editor anda
<!DOCTYPE html>
<html>
<head>
<title>Peta Provinsi</title>
<meta name="viewport" content="initial-scale=1.0, user-
scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% ; width: 100%}
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=API Key
Anda&sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(-6.224521,106.840553),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new
google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas"></div>
</body>
</html>
Simpan kode diatas dengan nama index.html pada folder web server lokal
anda, setelah itu jalankan dengan menggunakan browser anda. Berikut
tampilan kode diatas pada browser Google Chrome.
5 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Sekarang mari kita belajar apa arti kode yang kita buat tadi.
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% ; width: 100%}
</style>
Kode diatas adalah kode CSS yang digunakan untuk mengatur tampilan
peta. #map_canvas digunakan untuk mendefinisikan tempat dimana map
ditampilkan, pada kode diatas map akan ditampilkan dengan tinggi 100%
yaitu memuhi body dari halaman html, atau dengan kata lain memenuhi
layar browser.
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=API Key
Anda&sensor=false">
</script>
Kode diatas digunakan untuk memanggil API dari Google Maps itu sendiri.
Isi key dengan browser key yang telah anda buat tadi, peta tidak akan tampil
jika anda tidak memasukkan API key anda. Sensor digunakan untuk
mendeteksi apakah aplikasi diakses pada device yang memiliki sensor lokasi
atau tidak, karena saya asumsikan kita menggunakan laptop, maka sensor
saya isi false.
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(-3.337954,117.320251),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new
google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
}
</script>
Disini kita melihat suatu fungsi javascript yang bernama initialize(). Fungsi
Initialize merupakan fungsi pertama yang dipanggil ketika halaman web
diload, perhatikan kode html berikut: <body onload="initialize()">
Variabel mapOptions digunakan untuk menampung opsi dari peta yang akan
kita tampilkan. Berikut penjelasan dari beberapa opsi yang kita gunakan
diatas.
ī‚ˇ center : digunakan untuk menentukan titik tengah peta ketika peta di
munculkan.
ī‚ˇ zoom : digunakan untuk mengatur cakupan peta itu sendiri. Semakin
besar zoom nya, semakin kecil dan detail cakupan peta tersebut.
ī‚ˇ mapTypeId : digunakan untuk mengatur tipe peta default.
6 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
MapType yang kita buat pada peta secara default adalah RoadMap (Peta
Jalan), sebenarnya ada beberapa pilihan tipe peta yang dapat kita gunakan,
berikut macam tipe peta yang dapat kita gunakan.
ī‚ˇ MapTypeId.ROADMAP menampilkan road map view sebagai default
ī‚ˇ MapTypeId.SATELLITE menampilkan Google Earth satelite images
ī‚ˇ MapTypeId.HYBRID menampilkan gabungan dari normal dan satelite
view
ī‚ˇ MapTypeId.TERRAIN menampilkan peta beserta terrain information
ī‚ˇ setTilt menampilkan 45 degree imagery
var map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
Variabel diatas digunakan untuk memunculkan peta pada halaman browser
anda. Kode diatas digunakan untuk create peta pada element map_canvas
menggunakan opsi yang disimpan pada variabel mapOptions. Untuk lebih
jelasnya tentang element map_canvas, lihat kode html berikut:
<div id="map_canvas"></div>
Menampilkan Polygon Provinsi Indonesia
Sekarang kita akan menampilkan Polygon Provinsi di Indonesia.
Polygon ini ditampilkan supaya kita bisa melihat lebih jelas dari batas-batas
provinsi yang ada di Indonesia.
Untuk menampilkan di Google Maps, kita bisa menggunakan dua
cara; yang pertama adalah dengan melakukan hosting terhadap file
KML(Keyhole Markup Language) sehingga polygon dapat terbaca oleh semua
orang; dan yang kedua adalah melakukan upload di Google Fusion Table.
Setelah saya mencoba mencari-cari di Internet dan StackOverFlow,
cara yang paling efisien dan efektif ternyata menggunakan Google Fusion
Table karena sudah Terintegrasi dengan google maps seghingga lebih mudah
dan cepat digunakan nantinya.
Untuk bisa mengakses Polygon yang berada di Google Fusion Table
tentunya kita harus melakukan upload terlebih dahulu terhadap file KML
nya.
Jika belum silakan download disini
http://goo.gl/AoO9LO
Setelah itu kita masuk kea kun Google Drive kita, kenapa Google Drive?
Karena Google Fusion Table merupakan bagian dari Google Drive īŠ
7 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Setelah kita berhasil masuk menggunakan akun Google kita. Kita buat dulu
file Fusion Table nya dengan cara seperti diatas. Createīƒ¨Fusion Table
Setelah itu akan muncul window baru, Choose File dan arahkan pada File
KML yang telah kita siapkan tadi. Ikuti petunjuk yang ada (Next next aja)
8 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Setelah berhasil kita upload KML kita. Silakan cek petanya, pilih tab Map Of
Geometry , jika belum keluar polygonnya silakan pilih toolsīƒ¨select
locationīƒ¨(pilih geometry)
Dan hasilnya pada Google Fusion Table kita adalah seperti berikut
Sudah muncul bukan? Tapi tentunya tidak seperti ini yang kita inginkan,
karena kita ingin menampilkan polygon tidak melalui web app dari Google,
tapi dari web app kita sendiri.
9 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Tambahkan kode berikut pada index.html yang telah kita buat sebelumnya
var layer = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: '12s5oKFfyL-
G_orulSQXuqGvzMGr85H2p6YI5nRM',
}
});
layer.setMap(map);
Script diatas digunakan untuk menampilkan Fusion Table Layer pada
Google Maps. Script diatas dapat dibaca seperti berikut, tampilkan Google
Maps Fusion Table Layer dengan Polygon ‘geometry’ (nama kolom yang
menyimpan latitude longitude/garis lintang bujur) dari tabel dengan kode
seperti diatas. Kode tabel dapat diperoleh dengan cara
Fileīƒ¨About This Tableīƒ¨Lihat Bagian ID
Atau dapat juga dengan cara melihat Parameter Get doc id pada URL
browser anda, lihat bagian yang saya warnai merah dibawah.
https://www.google.com/fusiontables/data?docid=12s5oKFfyL-
G_orulSQXuqGvzMGr85H2p6YI5nRM#map:id=3
Selain itu jangan lupa set Data pada Fusion Table anda menjadi public,
karena data yang ada tidak bisa diakses jika kita Share Settingnya masih
private.
Klik Button Share yang ada di pojok kanan atas, lalu akan muncul tampilan
seperti berikut:
10 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Change dari private menjadi public.
Dan mari kita lihat di aplikasi WebGIS kita.
Sudah muncul polygonnya dan kita juga sudah ada fitur info window yang
akan muncul ketika kita klik polygon salah satu provinsi tertentu.
Mashup Data Google Fusion Table dan SQL
Kita tidak akan hanya menampilkan polygon dari Fusion Table saja, tetapi
kita juga akan menampilkan suatu Peta Tematik yang memiliki beberapa
warna. Berikut contoh peta yang akan kita buat pada step ini.
11 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Peta Tematik diatas adalah Peta Tematik yang menunjukkan jumlah
penduduk Indonesia. Berikut pembagiannya:
ī‚ˇ < 3 juta : warna hijau
ī‚ˇ 3-6 juta : warna kuning
ī‚ˇ >6 juta : warna merah
Jumlah penduduk yang digunakan untuk membedakan warna dari polygon
diatas akan kita simpan pada database MySQL. Pembagian diatas saya
hanya gunakan sebagai contoh.
Silakan import data SQL jumlah penduduk berikut :
http://goo.gl/y8oBxY
Setelah di import, kita tidak bisa langsung mengakses data tersebut
menggunakan javascript, kita perlu membuat suatu service PHP yang
menjembatani antara SQL dan aplikasi.
Berikut kode PHP yang kita buat.
<?php
$server = "localhost";
$username = "username database anda";
$password = "password database";
$database = "indonesia";
$con = mysql_connect($server, $username, $password) or die
("Could not connect: " . mysql_error());
mysql_query('SET CHARACTER SET utf8');
mysql_select_db($database, $con);
$sql = "SELECT * FROM penduduk";
$result = mysql_query($sql) or die ("Query error: " .
mysql_error());
$records = array();
while($row = mysql_fetch_assoc($result)) {
$records[] = $row;
}
mysql_close($con);
$data = "{"provinsi" : ".json_encode($records)."}";
echo $data;
?>
Kode PHP diatas mengubah output SQL yang kita miliki menjadi JSON
format yang dimengerti oleh bahasa Javascript.
Simpan dengan nama data.php lalu cek di browser untuk memastikan kode
PHP yang dibuat benar atau tidak. Jika benar maka akan keluar output
JSON seperti berikut:
12 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Menampilkan Peta Tematik
Setelah kita mempunyai service berbentuk PHP yang dapat kita akses,
sekarang kita dapat langsung memanggil data SQL yang kita simpan.
Dengan memanfaatkan kolom jumlah penduduk yang ada pada data kita,
kita akan membedakan warna dari tiap polygon berdasarkan kriteria jumlah
penduduk.
Tambahkan script berikut pada fungsi initialize:
$.ajax({
type:'GET',
url:'data.php',
dataType:'json',
success: function(data) {
var min="";
var med="";
var max="";
var style;
var provinsi,ibukota,jumlah;
for(var i=0;i<data.provinsi.length;i++)
{
jumlah=data.provinsi[i].jumlah;
kode=data.provinsi[i].kode;
if(jumlah<=3000000)
{
min+=kode+",";
}
else if(jumlah>3000000&&jumlah<6000000)
{
med+=kode+",";
}
else if(jumlah>=6000000)
13 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
{
max+=kode+",";
}
}
fusiontablelayer(min,med,max);
}
});
Fungsi script diatas adalah untuk memanggil data dari SQL yang kita miliki,
tentu saja dengan bantuan Service yang kita buat menggunakan PHP.
$.ajax({
type:'GET',
url:'data.php',
dataType:'json',
success: function(data) {
Script ajax diatas menggunakan jQuery library, jadi jangan lupakan script
berikut di Head HTML anda
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script
>
Kembali ke script ajax yang ada diatas, url digunakan untuk memanggil file
Service PHP yang kita buat tadi, dan dataType adalah jenis data yang kita
inginkan. Data JSON yang diperoleh dari data.php akan disimpan pada
variabel data yang terdapat pada bagian success.
var min="";
var med="";
var max="";
var provinsi,ibukota,jumlah;
Variabel diatas digunakan untuk menyimpan data yang kita perlukan nanti.
Variabel min digunakan untuk menyimpan kode wilayah yang penduduknya
kurang dari 3 juta, variabel med digunakan untuk menyimpan kode wilayah
yang penduduknya 3-6 juta dan variabel max tentunya untuk menyimpan
kode wilayah yang penduduknya lebih dari 6 juta. Kode dibawah ini yang
digunakan untuk menyimpan kode wilayah berdasarkan pembagian jumlah
penduduknya.
for(var i=0;i<data.provinsi.length;i++)
{
jumlah=data.provinsi[i].jumlah;
kode=data.provinsi[i].kode;
if(jumlah<=3000000)
{
min+=kode+",";
}
else if(jumlah>3000000&&jumlah<6000000)
{
14 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
med+=kode+",";
}
else if(jumlah>=6000000)
{
max+=kode+",";
}
For diatas digunakan untuk melakukan iterasi terhadap seluruh data JSON
yang didapat. Statements if else tentu saja digunakan untuk membagi kode
wilayah berdasarkan jumlah penduduk. Kode wilayah yang ada disimpan
pada suatu variabel dengan tipe data String (ex : 34,35,36,)
Kita juga melihat kode berikut:
fusiontablelayer(min,med,max);
Kode diatas digunakan untuk memanggil function fusiontablelayer, selain itu
kode ini juga mengirimkan data kode wilayah yang disimpan dalam variabel
min, med, dan max.
Untuk itu kita perlu menambahkan fungsi berikut:
function fusiontablelayer(kode1,kode2,kode3)
{
kode1=removeLastString(kode1);
kode2=removeLastString(kode2);
kode3=removeLastString(kode3);
var layer = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: '12s5oKFfyL-
G_orulSQXuqGvzMGr85H2p6YI5nRM',
},
styles: [{
where: 'kode IN ('+kode1+')',
polygonOptions:{
fillColor:'#00FF00'
}
},{
where: 'kode IN ('+kode2+')',
polygonOptions:{
fillColor:'#FFFF00'
}
},{
where: 'kode IN ('+kode3+')',
polygonOptions:{
fillColor:'#FF0000'
}
}]
});
layer.setMap(map);
}
function removeLastString(kode)
{
kode = kode.substring(0,kode.length-1)+'';
return kode;
15 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
}
Kita melihat dua buah function pada kode sebelumnya. Fungsi pertama
digunakan untuk memanggil fusion table layer dan fungsi kedua digunakan
oleh fungsi fusion table layer untuk memanipulasi String. Function
removeLastString menghilangkan koma terakhir pada variabel min, med dan
max; koma terakhir perlu dihilangkan supaya sesuai dengan format yang
dibutuhkan untuk melakukan query ke Google Fusion Table Layer.
var layer = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: '12s5oKFfyL-
G_orulSQXuqGvzMGr85H2p6YI5nRM',
},
styles: [{
where: 'kode IN ('+kode1+')',
polygonOptions:{
fillColor:'#00FF00'
}
},{
where: 'kode IN ('+kode2+')',
polygonOptions:{
fillColor:'#FFFF00'
}
},{
where: 'kode IN ('+kode3+')',
polygonOptions:{
fillColor:'#FF0000'
}
}]
});
layer.setMap(map);
Query diatas sama seperti sebelumnya, yang berbeda adalah disini sudah
menerapkan Style pada polygon. Fungsi where pada query google fusion table
adalah untuk menambahkan kondisi tertentu, jadi untu kondisi kode wilayah
tertentu maka ganti warna nya menjadi warna tertentu.
Silakan coba kita jalankan WebGIS yang telah dibuat. Jika kode yang dibuat
benar maka akan keluar tampilan seperti berikut:
16 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Jika kita lihat peta diatas, tentunya kita tidak tahu apa arti dari warna
merah, kuning, dan hijau. Supaya user dapat mengerti arti warna diatas kita
dapat menambahkan suatu legenda. Kali ini kita akan menambahkan
legenda dibagian pojok kanan bawah peta.
Tambahkan function berikut pada kode javascript kita.
function legenda(controlDiv,map){
controlDiv.style.backgroundColor = 'white';
controlDiv.title = 'Legenda';
var isi1 = "<table class="table table-
condensed"><th><td>Legenda</td></th>";
var isi2 = "<tr><td style="background-
color:#00FF00">&nbsp;&nbsp;&nbsp;</td><td><3 juta</td></tr>";
var isi3 = "<tr><td style="background-
color:#FFFF00"> </td><td>3-6 juta</td></tr>";
var isi4 = "<tr><td style="background-
color:#FF0000"> </td><td>>6 juta</td></tr>";
var isi5 = "</table>";
controlDiv.innerHTML = isi1+isi2+isi3+isi4+isi5;
}
Setelah itu tambahkan kode berikut pada akhir function initialize untuk
menampilkan legenda yang telah kita buat pada function legenda.
var homeControlDiv=document.createElement('div');
var homeControls=new legenda(homeControlDiv,map);
homeControlDiv.index = 1;
map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(homeCo
ntrolDiv);
Setelah itu jika kita jalankan pada browser akan muncul legenda seperti
berikut:
17 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Select Layer By Pulau
Setelah kita bisa menampilkan peta tematik satu Indonesia, sekarang kita
akan menampilkan peta tematik per pulau. Pertama-tama tentunya kita
buat selector di HTML nya, kali ini untuk selector nya kita akan
menggunakan radio button.
Jika sebelumnya kita sudah mempunyai div yang berisi map_canvas,
tambahkan kode nya menjadi seperti berikut:
<div id="title"><center>
<h1>Jumlah Penduduk Indonesia 2010</h1>
</center></div>
<div id="map_canvas"></div>
<div id="sidebar">
<legend>Provinsi By Pulau</legend>
<input type="radio" name="pulau" value="Jawa">Jawa<br>
<input type="radio" name="pulau" value="Sumatera>
Sumatera</br>
<input type="radio" name="pulau" value="Kalimantan">
Kalimantan</br>
<input type="radio" name="pulau" value="Sulawesi">
Sulawesi</br>
<input type="radio" name="pulau" value="Papua">Papua</br>
<button onclick="initialize()">Show All</button>
<div id="showdata">
</div>
</div>
Disini kita memiliki dua buah div dengan id title dan sidebar. Title
digunakan untuk memberikan judul, dan sidebar digunakan sebagai tempat
untuk meleakkan checkbox.
18 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Selain itu supaya tampilan peta nya terpartisi dengan baik, silakan ubah
kode style css yang berada pada head menjadi seperti berikut:
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#title { height: 10%; width : 100%; }
#sidebar {height : 85% ; width : 20%; float : left}
#map_canvas { height : 85% ; width : 80%; float : right}
Jika kita jalankan, WebGIS kita akan terlihat seperti berikut:
Sekarang, kita akan membuat handler bagi checkbox yang sudah kita buat
pada javascript kita. Tambahkan kode berikut di luar fungsi manapun, tetapi
masih berada di dalam tag script.
$(document).ready(function(){
$('input[name="pulau"]').on('change', function(){
layer.setMap(null);
var value=$(this).val();
var jawa="31,32,33,34,35,36";
var sumatera="11,12,13,15,16,17,18,14";
var kalimantan="61,62,63,64";
var sulawesi="71,72,73,74,75,76";
var papua="91,94";
switch(value)
{
case "Jawa":
layerByPulau(jawa);
break;
case "Sumatera":
layerByPulau(sumatera);
break;
case "Kalimantan":
19 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
layerByPulau(kalimantan);
break;
case "Sulawesi":
layerByPulau(sulawesi);
break;
case "Papua":
layerByPulau(papua);
break;
default:
}
});
});
Kode diatas tentunya menggunakan bantuan JQuery di dalam
penulisannya. Secara singkat kode diatas mempunyai fungsi membaca nilai
atau value dari checkbox yang kita buat setiap terjadi perubahan (misal
checkbox Jawa di pilih, maka fungsi tersebut akan membaca value dari
checkbox Jawa), setelah mendapatkan value nya maka kode diatas akan
memanggil fungsi layerByPulau yang akan kita buat nanti.
var jawa="31,32,33,34,35,36";
var sumatera="11,12,13,15,16,17,18,14";
var kalimantan="61,62,63,64";
var sulawesi="71,72,73,74,75,76";
var papua="91,94";
Jangan bingung ketika melihat variabel diatas, variabel diatas digunakan
untuk menyimpan kode Provinsi di setiap pulau.
Sekarang kita akan buat function baru yang bernama layerByPulau, function
ini yang akan dipanggil oleh handler dari checkbox tadi.
Tambahkan function berikut pada tag javascript.
function layerByPulau(kodeWilayah)
{
layer = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: 'id fusion table',
where: 'kode IN ('+kodeWilayah+')',
},
options: {
suppressInfoWindows:true
},
styles: [{
where: 'kode IN ('+tampungKode1+')',
polygonOptions:{
fillColor:'#00FF00'
}
},{
where: 'kode IN ('+tampungKode2+')',
polygonOptions:{
fillColor:'#FFFF00'
}
20 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
},{
where: 'kode IN ('+tampungKode3+')',
polygonOptions:{
fillColor:'#FF0000'
}
}],
});
layer.setMap(map);
}
Kode diatas hampir sama dengan kode sebelumnya untuk memanggil fusion
table layer, kita hanya menambahkan kondisi pada query pertama. Selain itu
juga tambahkan tampungKode1/2/3 pada variabel javascript seperti berikut:
Pada awal tag javascript
var tampungKode1,tampungKode2,tampungKode3;
Dan pada awal function fusiontablelayer, setelah String koma (,) dihilangkan
tampungKode1=kode1;tampungKode2=kode2;tampungKode3=kode3;
Jika sudah kita bisa langsung jalankan WebGIS kita dan akan terlihat
sebagai berikut jika saya memilih pulau sumatera.
Menampilkan Info Provinsi
Sekarang kita akan menampilkan info provinsi yang berada pada data SQL
kita ke sidebar ketika salah satu polygon provinsi di pilih. Untuk bisa
menampilkan itu pertama kita hilangkan info window nya, pastikan ada
option berikut ketika memanggil fusiontable layer.
21 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
options: {
suppressInfoWindows:true
},
Setelah itu kita tambahkan event listener berikut setelah setiap kode
layer.setMap(map).
google.maps.event.addListener(layer,'click',function(e){showData(e
)});
Event listener diatas merupakan event yang muncul ketika layer fusion table
di click. Setelah layer di klik, maka function showData akan dipanggil,
tambahkan function showData berikut pada javascript yang kita buat.
function showData(e)
{
var kodeBPS=e.row['kode'].value;
var location=e.latLng;
$.ajax({
type:'GET',
url:'data.php',
dataType:'json',
success: function(data) {
var isi="";
for(var i=0;i<data.provinsi.length;i++)
{
if(data.provinsi[i].kode==kodeBPS)
{
isi+="<b>Provinsi :
</b>"+data.provinsi[i].provinsi+"</br>";
isi+="<b>Ibukota :
</b>"+data.provinsi[i].ibukota+"</br>";
isi+="<b>Jumlah Penduduk :
</b>"+data.provinsi[i].jumlah+" Jiwa</br>";
$('#showdata').html(isi);
infoWindow.setContent("<b>"+data.provinsi[i].provinsi+"</b>");
infoWindow.setPosition(location);
infoWindow.open(map);
}
}
}
});
}
Kode diatas fungsinya untuk mengambil dan menampilkan data SQL yang
terdapat pada database sesuai dengan layer polygon yang di klik. Selain itu
kode diatas juga digunakan untuk menampilkan info window pada peta yang
berisi nama provinsi saja. Tambahkan kode berikut untuk deklarasi
infoWindow pada bagian awal tag javascript.
22 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
var infoWindow = new google.maps.InfoWindow();
Jika kita coba jalankan WebGIS kita pada browser akan menjadi seperti
berikut:
Memperindah Tampilan
Sekarang kita akan sedikit memperindah tampilan dari peta kita
diatas, kita akan menggunakan twitter bootstrap 2.3; silakan langsung
download di website resmi dari twitter bootstrap atau bisa download di link
berikut:
http://goo.gl/p1RFXn
Extract file yang ada ke dalam folder yang sama dengan project yang kita
buat.
Setelah itu tambahkan kode berikut pada tag head
<link href="css/bootstrap.css" rel="stylesheet" media="screen">
<link href="css/bootstrap-responsive.css" rel="stylesheet"
media="screen">
Sesuaikan path css anda dengan tempat anda menyimpan css dari twitter
bootstrap tadi.
Selain itu tambahkan kode berikut sebelum tag penutup body.
<script src="js/bootstrap.js"></script>
Sesuaikan juga path nya sesuai tempat menyimpan file js dari twitter
bootstrap tadi.
23 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
Berikut adalah kode lengkap yang kita buat dari awal sampai akhir, silakan
modifikasi untuk efektifitas dan penggunaan masing-masing
<!DOCTYPE html>
<html>
<head>
<title>Peta Provinsi</title>
<meta name="viewport" content="initial-scale=1.0, user-
scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#title { height: 10%; width : 100%; }
#sidebar {height : 85% ; width : 20%; float : left}
#map_canvas { height : 85% ; width : 80%; float :
right}
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=APIKEYGooglemaps&
sensor=false">
</script>
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min
.js"></script>
<link href="css/bootstrap.css" rel="stylesheet"
media="screen">
<link href="css/bootstrap-responsive.css" rel="stylesheet"
media="screen">
<script type="text/javascript">
var map,layer;
var tampungKode1,tampungKode2,tampungKode3;
var infoWindow = new google.maps.InfoWindow();
function initialize() {
google.maps.visualRefresh = true;
var mapOptions = {
center: new google.maps.LatLng(-
3.337954,117.320251),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new
google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
$.ajax({
type:'GET',
url:'data.php',
dataType:'json',
success: function(data) {
var kel1,kel2,kel3;
var min="";
var med="";
var max="";
var jumlah,kode;
for(var i=0;i<data.provinsi.length;i++)
{
jumlah=data.provinsi[i].jumlah;
24 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
kode=data.provinsi[i].kode;
if(jumlah<=3000000)
{
min+=kode+",";
}
else
if(jumlah>3000000&&jumlah<6000000)
{
med+=kode+",";
}
else if(jumlah>=6000000)
{
max+=kode+",";
}
}
fusiontablelayer(min,med,max);
}
});
var homeControlDiv=document.createElement('div');
var homeControls=new legenda(homeControlDiv,map);
homeControlDiv.index = 1;
map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(homeCo
ntrolDiv);
}
function fusiontablelayer(kode1,kode2,kode3)
{
kode1=removeLastString(kode1);
kode2=removeLastString(kode2);
kode3=removeLastString(kode3);
tampungKode1=kode1;tampungKode2=kode2;tampungKode3=kode3;
layer = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: 'id fusion table',
},
options: {
suppressInfoWindows:true
},
styles: [{
where: 'kode IN ('+kode1+')',
polygonOptions:{
fillColor:'#00FF00'
}
},{
where: 'kode IN ('+kode2+')',
polygonOptions:{
fillColor:'#FFFF00'
}
},{
where: 'kode IN ('+kode3+')',
polygonOptions:{
fillColor:'#FF0000'
}
}]
});
25 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
layer.setMap(map);
google.maps.event.addListener(layer,'click',function(e){showData(e
)});
}
function removeLastString(kode)
{
kode = kode.substring(0,kode.length-1)+'';
return kode;
}
//buat nambahin legenda
function legenda(controlDiv,map){
controlDiv.style.backgroundColor = 'white';
controlDiv.title = 'Legenda';
var isi1 = "<table class="table table-
condensed"><th><td>Legenda</td></th>";
var isi2 = "<tr><td style="background-
color:#00FF00">&nbsp;&nbsp;&nbsp;</td><td><3 juta</td></tr>";
var isi3 = "<tr><td style="background-
color:#FFFF00"> </td><td>3-6 juta</td></tr>";
var isi4 = "<tr><td style="background-
color:#FF0000"> </td><td>>6 juta</td></tr>";
var isi5 = "</table>";
controlDiv.innerHTML = isi1+isi2+isi3+isi4+isi5;
}
function layerByPulau(kodeWilayah)
{
layer = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: 'id fusion table ',
where: 'kode IN ('+kodeWilayah+')',
},
options: {
suppressInfoWindows:true
},
styles: [{
where: 'kode IN ('+tampungKode1+')',
polygonOptions:{
fillColor:'#00FF00'
}
},{
where: 'kode IN ('+tampungKode2+')',
polygonOptions:{
fillColor:'#FFFF00'
}
},{
where: 'kode IN ('+tampungKode3+')',
polygonOptions:{
fillColor:'#FF0000'
}
}],
});
layer.setMap(map);
google.maps.event.addListener(layer,'click',function(e){showData(e
)});
26 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
}
function showData(e)
{
var kodeBPS=e.row['kode'].value;
var location=e.latLng;
$.ajax({
type:'GET',
url:'data.php',
dataType:'json',
success: function(data) {
var isi="";
for(var i=0;i<data.provinsi.length;i++)
{
if(data.provinsi[i].kode==kodeBPS)
{
isi+="<b>Provinsi :
</b>"+data.provinsi[i].provinsi+"</br>";
isi+="<b>Ibukota :
</b>"+data.provinsi[i].ibukota+"</br>";
isi+="<b>Jumlah Penduduk :
</b>"+data.provinsi[i].jumlah+" Jiwa</br>";
$('#showdata').html(isi);
infoWindow.setContent("<b>"+data.provinsi[i].provinsi+"</b>");
infoWindow.setPosition(location);
infoWindow.open(map);
}
}
}
});
}
$(document).ready(function(){
$('input[name="pulau"]').on('change', function(){
layer.setMap(null);
var value=$(this).val();
var jawa="31,32,33,34,35,36";
var sumatera="11,12,13,15,16,17,18,14";
var kalimantan="61,62,63,64";
var sulawesi="71,72,73,74,75,76";
var papua="91,94";
switch(value)
{
case "Jawa":
layerByPulau(jawa);
break;
case "Sumatera":
layerByPulau(sumatera);
break;
case "Kalimantan":
layerByPulau(kalimantan);
break;
case "Sulawesi":
layerByPulau(sulawesi);
break;
case "Papua":
layerByPulau(papua);
break;
default:
27 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m
}
});
});
</script>
</head>
<body onload="initialize()">
<div id="title"><center><h1>Jumlah Penduduk Indonesia
2010</h1></center></div>
<div id="map_canvas"></div>
<div id="sidebar">
<legend>Provinsi By Pulau</legend>
<input type="radio" name="pulau" value="Jawa">Jawa<br>
<input type="radio" name="pulau"
value="Sumatera">Sumatera</br>
<input type="radio" name="pulau" value="Kalimantan"
>Kalimantan</br>
<input type="radio" name="pulau"
value="Sulawesi">Sulawesi</br>
<input type="radio" name="pulau"
value="Papua">Papua</br></br>
<button onclick="initialize()" class="btn btn-
primary">Show All</button>
</br></br>
<pre>
<div id="showdata">
</div>
</pre>
</div>
<script src="js/bootstrap.js"></script>
</body>
</html>
Dan berikut adalah tampilan WebGIS yang telah selesai kita buat.
Sekian tutorial kita kali ini, semoga bermanfaat.

More Related Content

What's hot

Pengukuran sudut cara seri rangkap
Pengukuran sudut cara seri rangkapPengukuran sudut cara seri rangkap
Pengukuran sudut cara seri rangkapRetno Pratiwi
 
Laporan Layout Peta Dengan Qgis
Laporan Layout Peta Dengan QgisLaporan Layout Peta Dengan Qgis
Laporan Layout Peta Dengan QgisIvul Varel Fu
 
Tutorial agisoft metashape - Edi Supriyanto
Tutorial agisoft metashape - Edi SupriyantoTutorial agisoft metashape - Edi Supriyanto
Tutorial agisoft metashape - Edi Supriyanto
edisupriyanto123
 
Survey Hidrografi (Ganes permata)
Survey Hidrografi (Ganes permata)Survey Hidrografi (Ganes permata)
Survey Hidrografi (Ganes permata)
afifsalim12
 
Laporan Praktikum GIS Digitasi
Laporan Praktikum GIS DigitasiLaporan Praktikum GIS Digitasi
Laporan Praktikum GIS Digitasi
Sally Indah N
 
Bab 6 menyipat datarasdfgh
Bab 6 menyipat datarasdfghBab 6 menyipat datarasdfgh
Bab 6 menyipat datarasdfghHendra Supriyanto
 
Tips dan trik optimasi Agisoft
Tips dan trik optimasi AgisoftTips dan trik optimasi Agisoft
Tips dan trik optimasi Agisoft
Dany Laksono
 
Spesifikasi penyajian peta rupa bumi
Spesifikasi penyajian peta rupa bumi Spesifikasi penyajian peta rupa bumi
Spesifikasi penyajian peta rupa bumi
Nur Hilaliyah
 
Praktikum kalibrasi kamera
Praktikum kalibrasi kameraPraktikum kalibrasi kamera
Praktikum kalibrasi kameraRetno Pratiwi
 
Acara 2 pengenalan peta geologi dan peta geomorfologi
Acara 2   pengenalan peta geologi dan peta geomorfologiAcara 2   pengenalan peta geologi dan peta geomorfologi
Acara 2 pengenalan peta geologi dan peta geomorfologiaryadipayana
 
PROSES SIG
PROSES SIGPROSES SIG
PROSES SIG
Resti Bie
 
Laporan kemiringan lereng
Laporan kemiringan lerengLaporan kemiringan lereng
Laporan kemiringan lereng
andini rambe
 
Materi Kuliah Penginderaan Jauh Dasar (FOTOGRAMETRI)
Materi Kuliah Penginderaan Jauh Dasar (FOTOGRAMETRI)Materi Kuliah Penginderaan Jauh Dasar (FOTOGRAMETRI)
Materi Kuliah Penginderaan Jauh Dasar (FOTOGRAMETRI)
Nurul Afdal Haris
 
Analisa Rencana Trase Jalan menggunakan Multi Criteria Analysis
Analisa Rencana Trase Jalan menggunakan Multi Criteria AnalysisAnalisa Rencana Trase Jalan menggunakan Multi Criteria Analysis
Analisa Rencana Trase Jalan menggunakan Multi Criteria Analysis
bramantiyo marjuki
 
Fitting dan variogram teoritis
Fitting dan variogram teoritisFitting dan variogram teoritis
Fitting dan variogram teoritishusnirusdi
 
GEOREFERENCING pada ARCGIS 10.0
GEOREFERENCING pada ARCGIS 10.0GEOREFERENCING pada ARCGIS 10.0
GEOREFERENCING pada ARCGIS 10.0
oriza steva andra
 
Penginderaan Jauh : Koreksi Geometrik Citra Landsat 8
Penginderaan Jauh : Koreksi Geometrik Citra Landsat 8Penginderaan Jauh : Koreksi Geometrik Citra Landsat 8
Penginderaan Jauh : Koreksi Geometrik Citra Landsat 8
Wachidatin N C
 
Pengantar kartografi
Pengantar kartografiPengantar kartografi
Pengantar kartografi
jetgeo96
 
Modul GIS (QGIS) Diklat GPS dan GIS BPSDM Kementerian PUPR, April 2016
Modul GIS (QGIS) Diklat GPS dan GIS BPSDM Kementerian PUPR, April 2016Modul GIS (QGIS) Diklat GPS dan GIS BPSDM Kementerian PUPR, April 2016
Modul GIS (QGIS) Diklat GPS dan GIS BPSDM Kementerian PUPR, April 2016
bramantiyo marjuki
 

What's hot (20)

Laporan praktikum penginderaan jauh
Laporan praktikum penginderaan jauhLaporan praktikum penginderaan jauh
Laporan praktikum penginderaan jauh
 
Pengukuran sudut cara seri rangkap
Pengukuran sudut cara seri rangkapPengukuran sudut cara seri rangkap
Pengukuran sudut cara seri rangkap
 
Laporan Layout Peta Dengan Qgis
Laporan Layout Peta Dengan QgisLaporan Layout Peta Dengan Qgis
Laporan Layout Peta Dengan Qgis
 
Tutorial agisoft metashape - Edi Supriyanto
Tutorial agisoft metashape - Edi SupriyantoTutorial agisoft metashape - Edi Supriyanto
Tutorial agisoft metashape - Edi Supriyanto
 
Survey Hidrografi (Ganes permata)
Survey Hidrografi (Ganes permata)Survey Hidrografi (Ganes permata)
Survey Hidrografi (Ganes permata)
 
Laporan Praktikum GIS Digitasi
Laporan Praktikum GIS DigitasiLaporan Praktikum GIS Digitasi
Laporan Praktikum GIS Digitasi
 
Bab 6 menyipat datarasdfgh
Bab 6 menyipat datarasdfghBab 6 menyipat datarasdfgh
Bab 6 menyipat datarasdfgh
 
Tips dan trik optimasi Agisoft
Tips dan trik optimasi AgisoftTips dan trik optimasi Agisoft
Tips dan trik optimasi Agisoft
 
Spesifikasi penyajian peta rupa bumi
Spesifikasi penyajian peta rupa bumi Spesifikasi penyajian peta rupa bumi
Spesifikasi penyajian peta rupa bumi
 
Praktikum kalibrasi kamera
Praktikum kalibrasi kameraPraktikum kalibrasi kamera
Praktikum kalibrasi kamera
 
Acara 2 pengenalan peta geologi dan peta geomorfologi
Acara 2   pengenalan peta geologi dan peta geomorfologiAcara 2   pengenalan peta geologi dan peta geomorfologi
Acara 2 pengenalan peta geologi dan peta geomorfologi
 
PROSES SIG
PROSES SIGPROSES SIG
PROSES SIG
 
Laporan kemiringan lereng
Laporan kemiringan lerengLaporan kemiringan lereng
Laporan kemiringan lereng
 
Materi Kuliah Penginderaan Jauh Dasar (FOTOGRAMETRI)
Materi Kuliah Penginderaan Jauh Dasar (FOTOGRAMETRI)Materi Kuliah Penginderaan Jauh Dasar (FOTOGRAMETRI)
Materi Kuliah Penginderaan Jauh Dasar (FOTOGRAMETRI)
 
Analisa Rencana Trase Jalan menggunakan Multi Criteria Analysis
Analisa Rencana Trase Jalan menggunakan Multi Criteria AnalysisAnalisa Rencana Trase Jalan menggunakan Multi Criteria Analysis
Analisa Rencana Trase Jalan menggunakan Multi Criteria Analysis
 
Fitting dan variogram teoritis
Fitting dan variogram teoritisFitting dan variogram teoritis
Fitting dan variogram teoritis
 
GEOREFERENCING pada ARCGIS 10.0
GEOREFERENCING pada ARCGIS 10.0GEOREFERENCING pada ARCGIS 10.0
GEOREFERENCING pada ARCGIS 10.0
 
Penginderaan Jauh : Koreksi Geometrik Citra Landsat 8
Penginderaan Jauh : Koreksi Geometrik Citra Landsat 8Penginderaan Jauh : Koreksi Geometrik Citra Landsat 8
Penginderaan Jauh : Koreksi Geometrik Citra Landsat 8
 
Pengantar kartografi
Pengantar kartografiPengantar kartografi
Pengantar kartografi
 
Modul GIS (QGIS) Diklat GPS dan GIS BPSDM Kementerian PUPR, April 2016
Modul GIS (QGIS) Diklat GPS dan GIS BPSDM Kementerian PUPR, April 2016Modul GIS (QGIS) Diklat GPS dan GIS BPSDM Kementerian PUPR, April 2016
Modul GIS (QGIS) Diklat GPS dan GIS BPSDM Kementerian PUPR, April 2016
 

Similar to Web gis peta interaktif jumlah penduduk

Tutorial dasar-pemrograman-google-maps-api
Tutorial dasar-pemrograman-google-maps-apiTutorial dasar-pemrograman-google-maps-api
Tutorial dasar-pemrograman-google-maps-apiGien Rockmantic
 
Tutorial google maps api
Tutorial google maps apiTutorial google maps api
Tutorial google maps api
Arif Hadi
 
Penggunaan api google maps kelompok6
Penggunaan api google maps kelompok6Penggunaan api google maps kelompok6
Penggunaan api google maps kelompok6
Benedicta Lestari
 
Modul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android SudaryatnoModul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android Sudaryatno
Yatno Sudar
 
Dasar-dasar google maps api
Dasar-dasar google maps apiDasar-dasar google maps api
Dasar-dasar google maps api
Abdul Fauzan
 
Cara pembuatan peta gis secara sederhana
Cara pembuatan peta gis secara sederhanaCara pembuatan peta gis secara sederhana
Cara pembuatan peta gis secara sederhana
Bagus ardian
 
Koreksi Geometrik, Digitasi, Dan Pembuatan Kenampakan 3D Dengan Aplikasi Goog...
Koreksi Geometrik, Digitasi, Dan Pembuatan Kenampakan 3D Dengan Aplikasi Goog...Koreksi Geometrik, Digitasi, Dan Pembuatan Kenampakan 3D Dengan Aplikasi Goog...
Koreksi Geometrik, Digitasi, Dan Pembuatan Kenampakan 3D Dengan Aplikasi Goog...
Rusdianto
 
Tutorial Cara Membuat Aplikasi RSS Android - creatorb
Tutorial Cara Membuat Aplikasi RSS Android - creatorbTutorial Cara Membuat Aplikasi RSS Android - creatorb
Tutorial Cara Membuat Aplikasi RSS Android - creatorb
creatorb dev
 
Pemrograman Dasar Android
Pemrograman Dasar AndroidPemrograman Dasar Android
Pemrograman Dasar Android
Abas Djumadi
 
Laporan pembuatan aplikasi my so untuk android ppt
Laporan pembuatan aplikasi my so untuk android pptLaporan pembuatan aplikasi my so untuk android ppt
Laporan pembuatan aplikasi my so untuk android pptWahyu Anggara
 
Laporan pembuatan aplikasi my so untuk android ppt
Laporan pembuatan aplikasi my so untuk android pptLaporan pembuatan aplikasi my so untuk android ppt
Laporan pembuatan aplikasi my so untuk android ppt
Wahyu Anggara
 
Aplikasi pengenalan sio hewan menggunakan metaio creator berbasis augmented r...
Aplikasi pengenalan sio hewan menggunakan metaio creator berbasis augmented r...Aplikasi pengenalan sio hewan menggunakan metaio creator berbasis augmented r...
Aplikasi pengenalan sio hewan menggunakan metaio creator berbasis augmented r...
Olbers Letfaar
 
Membuat aplikasi sistem informasi geografis dengan visual basic & MySQL
Membuat aplikasi sistem informasi geografis dengan visual basic & MySQLMembuat aplikasi sistem informasi geografis dengan visual basic & MySQL
Membuat aplikasi sistem informasi geografis dengan visual basic & MySQL
Rahmat Taufiq Sigit
 
Laporan Praktikum Sistem Informasi Geografis (SIG)
Laporan Praktikum Sistem Informasi Geografis (SIG)Laporan Praktikum Sistem Informasi Geografis (SIG)
Laporan Praktikum Sistem Informasi Geografis (SIG)
Ahmad Dani
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
creatorb dev
 
Seri 9 : Aplikasi gps dengan app inventor
Seri 9 : Aplikasi gps dengan app inventorSeri 9 : Aplikasi gps dengan app inventor
Seri 9 : Aplikasi gps dengan app inventor
Iki Mazadi
 
Prntscreen
PrntscreenPrntscreen
Prntscreen
De Es
 
Laravel Basic Development
Laravel Basic Development Laravel Basic Development
Laravel Basic Development
ssuser1fd02a1
 

Similar to Web gis peta interaktif jumlah penduduk (20)

Tutorial dasar-pemrograman-google-maps-api
Tutorial dasar-pemrograman-google-maps-apiTutorial dasar-pemrograman-google-maps-api
Tutorial dasar-pemrograman-google-maps-api
 
Tutorial google maps api
Tutorial google maps apiTutorial google maps api
Tutorial google maps api
 
Penggunaan api google maps kelompok6
Penggunaan api google maps kelompok6Penggunaan api google maps kelompok6
Penggunaan api google maps kelompok6
 
Modul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android SudaryatnoModul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android Sudaryatno
 
Dasar-dasar google maps api
Dasar-dasar google maps apiDasar-dasar google maps api
Dasar-dasar google maps api
 
Cara pembuatan peta gis secara sederhana
Cara pembuatan peta gis secara sederhanaCara pembuatan peta gis secara sederhana
Cara pembuatan peta gis secara sederhana
 
Koreksi Geometrik, Digitasi, Dan Pembuatan Kenampakan 3D Dengan Aplikasi Goog...
Koreksi Geometrik, Digitasi, Dan Pembuatan Kenampakan 3D Dengan Aplikasi Goog...Koreksi Geometrik, Digitasi, Dan Pembuatan Kenampakan 3D Dengan Aplikasi Goog...
Koreksi Geometrik, Digitasi, Dan Pembuatan Kenampakan 3D Dengan Aplikasi Goog...
 
Tutorial Cara Membuat Aplikasi RSS Android - creatorb
Tutorial Cara Membuat Aplikasi RSS Android - creatorbTutorial Cara Membuat Aplikasi RSS Android - creatorb
Tutorial Cara Membuat Aplikasi RSS Android - creatorb
 
Pemrograman Dasar Android
Pemrograman Dasar AndroidPemrograman Dasar Android
Pemrograman Dasar Android
 
Laporan pembuatan aplikasi my so untuk android ppt
Laporan pembuatan aplikasi my so untuk android pptLaporan pembuatan aplikasi my so untuk android ppt
Laporan pembuatan aplikasi my so untuk android ppt
 
Laporan pembuatan aplikasi my so untuk android ppt
Laporan pembuatan aplikasi my so untuk android pptLaporan pembuatan aplikasi my so untuk android ppt
Laporan pembuatan aplikasi my so untuk android ppt
 
ipro 1
ipro 1ipro 1
ipro 1
 
Aplikasi pengenalan sio hewan menggunakan metaio creator berbasis augmented r...
Aplikasi pengenalan sio hewan menggunakan metaio creator berbasis augmented r...Aplikasi pengenalan sio hewan menggunakan metaio creator berbasis augmented r...
Aplikasi pengenalan sio hewan menggunakan metaio creator berbasis augmented r...
 
Membuat aplikasi sistem informasi geografis dengan visual basic & MySQL
Membuat aplikasi sistem informasi geografis dengan visual basic & MySQLMembuat aplikasi sistem informasi geografis dengan visual basic & MySQL
Membuat aplikasi sistem informasi geografis dengan visual basic & MySQL
 
Laporan rektifikasi
Laporan rektifikasiLaporan rektifikasi
Laporan rektifikasi
 
Laporan Praktikum Sistem Informasi Geografis (SIG)
Laporan Praktikum Sistem Informasi Geografis (SIG)Laporan Praktikum Sistem Informasi Geografis (SIG)
Laporan Praktikum Sistem Informasi Geografis (SIG)
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
 
Seri 9 : Aplikasi gps dengan app inventor
Seri 9 : Aplikasi gps dengan app inventorSeri 9 : Aplikasi gps dengan app inventor
Seri 9 : Aplikasi gps dengan app inventor
 
Prntscreen
PrntscreenPrntscreen
Prntscreen
 
Laravel Basic Development
Laravel Basic Development Laravel Basic Development
Laravel Basic Development
 

Recently uploaded

PERSENTASI AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pptx
PERSENTASI AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pptxPERSENTASI AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pptx
PERSENTASI AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pptx
TeukuEriSyahputra
 
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
Indah106914
 
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
arianferdana
 
ppt landasan pendidikan pai 9 revisi.pdf
ppt landasan pendidikan pai 9 revisi.pdfppt landasan pendidikan pai 9 revisi.pdf
ppt landasan pendidikan pai 9 revisi.pdf
setiatinambunan
 
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdfRANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
junarpudin36
 
AKSI NYATA MODUL 1.3 visi dan prakarsa perubahan
AKSI NYATA MODUL 1.3 visi  dan prakarsa perubahanAKSI NYATA MODUL 1.3 visi  dan prakarsa perubahan
AKSI NYATA MODUL 1.3 visi dan prakarsa perubahan
PutuRatihSiswinarti1
 
Laporan Kegiatan Pramuka Tugas Tambahan PMM.pdf
Laporan Kegiatan Pramuka Tugas Tambahan PMM.pdfLaporan Kegiatan Pramuka Tugas Tambahan PMM.pdf
Laporan Kegiatan Pramuka Tugas Tambahan PMM.pdf
UmyHasna1
 
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum MerdekaModul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Fathan Emran
 
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
PreddySilitonga
 
Kisi-kisi Soal PAT Matematika Kelas 3 SD
Kisi-kisi Soal PAT Matematika Kelas 3 SDKisi-kisi Soal PAT Matematika Kelas 3 SD
Kisi-kisi Soal PAT Matematika Kelas 3 SD
denunugraha
 
ppt profesionalisasi pendidikan Pai 9.pdf
ppt profesionalisasi pendidikan Pai 9.pdfppt profesionalisasi pendidikan Pai 9.pdf
ppt profesionalisasi pendidikan Pai 9.pdf
Nur afiyah
 
PERILAKU MENYIMPANG DAN PENGENDALIAN SOSIAL.ppt
PERILAKU MENYIMPANG DAN PENGENDALIAN SOSIAL.pptPERILAKU MENYIMPANG DAN PENGENDALIAN SOSIAL.ppt
PERILAKU MENYIMPANG DAN PENGENDALIAN SOSIAL.ppt
EkaPuspita67
 
untuk observasi kepala sekolah dengan pengawas
untuk observasi kepala sekolah dengan pengawasuntuk observasi kepala sekolah dengan pengawas
untuk observasi kepala sekolah dengan pengawas
TEDYHARTO1
 
Penjelasan tentang Tahapan Sinkro PMM.pptx
Penjelasan tentang Tahapan Sinkro PMM.pptxPenjelasan tentang Tahapan Sinkro PMM.pptx
Penjelasan tentang Tahapan Sinkro PMM.pptx
GuneriHollyIrda
 
Pendampingan Individu 2 Modul 1 PGP 10 Kab. Sukabumi Jawa Barat
Pendampingan Individu 2 Modul 1 PGP 10 Kab. Sukabumi Jawa BaratPendampingan Individu 2 Modul 1 PGP 10 Kab. Sukabumi Jawa Barat
Pendampingan Individu 2 Modul 1 PGP 10 Kab. Sukabumi Jawa Barat
Eldi Mardiansyah
 
Permainan Wiwi Wowo aksi nyata berkebhinekaan
Permainan Wiwi Wowo aksi nyata berkebhinekaanPermainan Wiwi Wowo aksi nyata berkebhinekaan
Permainan Wiwi Wowo aksi nyata berkebhinekaan
DEVI390643
 
ALur Tujuan Pembelajaran Materi IPA Kelas VII (1).pptx
ALur Tujuan Pembelajaran Materi IPA  Kelas VII (1).pptxALur Tujuan Pembelajaran Materi IPA  Kelas VII (1).pptx
ALur Tujuan Pembelajaran Materi IPA Kelas VII (1).pptx
rusinaharva1
 
Observasi Praktik Kinerja Kepala Sekolah.pdf
Observasi Praktik Kinerja Kepala Sekolah.pdfObservasi Praktik Kinerja Kepala Sekolah.pdf
Observasi Praktik Kinerja Kepala Sekolah.pdf
andikuswandi67
 
PPT ELABORASI PEMAHAMAN MODUL 1.4. budaya positfpdf
PPT ELABORASI PEMAHAMAN MODUL 1.4. budaya positfpdfPPT ELABORASI PEMAHAMAN MODUL 1.4. budaya positfpdf
PPT ELABORASI PEMAHAMAN MODUL 1.4. budaya positfpdf
SdyokoSusanto1
 
RESUME DAN REFLEKSI MODUL 1 GURU INFORMATIKA 2024.pptx
RESUME DAN REFLEKSI MODUL 1 GURU INFORMATIKA 2024.pptxRESUME DAN REFLEKSI MODUL 1 GURU INFORMATIKA 2024.pptx
RESUME DAN REFLEKSI MODUL 1 GURU INFORMATIKA 2024.pptx
ABDULRASIDSANGADJI1
 

Recently uploaded (20)

PERSENTASI AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pptx
PERSENTASI AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pptxPERSENTASI AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pptx
PERSENTASI AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pptx
 
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
0. PPT Juknis PPDB TK-SD -SMP 2024-2025 Cilacap.pptx
 
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
2. Kerangka Kompetensi Literasi Guru SD_Rev.pptx
 
ppt landasan pendidikan pai 9 revisi.pdf
ppt landasan pendidikan pai 9 revisi.pdfppt landasan pendidikan pai 9 revisi.pdf
ppt landasan pendidikan pai 9 revisi.pdf
 
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdfRANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
 
AKSI NYATA MODUL 1.3 visi dan prakarsa perubahan
AKSI NYATA MODUL 1.3 visi  dan prakarsa perubahanAKSI NYATA MODUL 1.3 visi  dan prakarsa perubahan
AKSI NYATA MODUL 1.3 visi dan prakarsa perubahan
 
Laporan Kegiatan Pramuka Tugas Tambahan PMM.pdf
Laporan Kegiatan Pramuka Tugas Tambahan PMM.pdfLaporan Kegiatan Pramuka Tugas Tambahan PMM.pdf
Laporan Kegiatan Pramuka Tugas Tambahan PMM.pdf
 
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum MerdekaModul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 5 Fase C Kurikulum Merdeka
 
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
 
Kisi-kisi Soal PAT Matematika Kelas 3 SD
Kisi-kisi Soal PAT Matematika Kelas 3 SDKisi-kisi Soal PAT Matematika Kelas 3 SD
Kisi-kisi Soal PAT Matematika Kelas 3 SD
 
ppt profesionalisasi pendidikan Pai 9.pdf
ppt profesionalisasi pendidikan Pai 9.pdfppt profesionalisasi pendidikan Pai 9.pdf
ppt profesionalisasi pendidikan Pai 9.pdf
 
PERILAKU MENYIMPANG DAN PENGENDALIAN SOSIAL.ppt
PERILAKU MENYIMPANG DAN PENGENDALIAN SOSIAL.pptPERILAKU MENYIMPANG DAN PENGENDALIAN SOSIAL.ppt
PERILAKU MENYIMPANG DAN PENGENDALIAN SOSIAL.ppt
 
untuk observasi kepala sekolah dengan pengawas
untuk observasi kepala sekolah dengan pengawasuntuk observasi kepala sekolah dengan pengawas
untuk observasi kepala sekolah dengan pengawas
 
Penjelasan tentang Tahapan Sinkro PMM.pptx
Penjelasan tentang Tahapan Sinkro PMM.pptxPenjelasan tentang Tahapan Sinkro PMM.pptx
Penjelasan tentang Tahapan Sinkro PMM.pptx
 
Pendampingan Individu 2 Modul 1 PGP 10 Kab. Sukabumi Jawa Barat
Pendampingan Individu 2 Modul 1 PGP 10 Kab. Sukabumi Jawa BaratPendampingan Individu 2 Modul 1 PGP 10 Kab. Sukabumi Jawa Barat
Pendampingan Individu 2 Modul 1 PGP 10 Kab. Sukabumi Jawa Barat
 
Permainan Wiwi Wowo aksi nyata berkebhinekaan
Permainan Wiwi Wowo aksi nyata berkebhinekaanPermainan Wiwi Wowo aksi nyata berkebhinekaan
Permainan Wiwi Wowo aksi nyata berkebhinekaan
 
ALur Tujuan Pembelajaran Materi IPA Kelas VII (1).pptx
ALur Tujuan Pembelajaran Materi IPA  Kelas VII (1).pptxALur Tujuan Pembelajaran Materi IPA  Kelas VII (1).pptx
ALur Tujuan Pembelajaran Materi IPA Kelas VII (1).pptx
 
Observasi Praktik Kinerja Kepala Sekolah.pdf
Observasi Praktik Kinerja Kepala Sekolah.pdfObservasi Praktik Kinerja Kepala Sekolah.pdf
Observasi Praktik Kinerja Kepala Sekolah.pdf
 
PPT ELABORASI PEMAHAMAN MODUL 1.4. budaya positfpdf
PPT ELABORASI PEMAHAMAN MODUL 1.4. budaya positfpdfPPT ELABORASI PEMAHAMAN MODUL 1.4. budaya positfpdf
PPT ELABORASI PEMAHAMAN MODUL 1.4. budaya positfpdf
 
RESUME DAN REFLEKSI MODUL 1 GURU INFORMATIKA 2024.pptx
RESUME DAN REFLEKSI MODUL 1 GURU INFORMATIKA 2024.pptxRESUME DAN REFLEKSI MODUL 1 GURU INFORMATIKA 2024.pptx
RESUME DAN REFLEKSI MODUL 1 GURU INFORMATIKA 2024.pptx
 

Web gis peta interaktif jumlah penduduk

  • 1. Membuat Peta Interaktif Jumlah Penduduk Indonesia Pada era internet sekarang ini, WebGIS memegang peranan penting dalam visualisasi data. Dengan menggunakan peta yang terhubug pada jaringan internet, maka informasi yang ada akan menjadi lebih mudah dibaca dan disebarkan kepada masyarakat. Membuat WebGIS Provinsi Indonesia Menggunakan Google Maps
  • 2. 1 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Daftar Isi GOOGLE MAPS 2 MEMBUAT WEBGIS PROVINSI INDONESIA MENGGUNAKAN GOOGLE MAPS JAVASCRIPT V3 API 2 HELLO WORLD 3 MENAMPILKAN POLYGON PROVINSI INDONESIA 6 MASHUP DATA GOOGLE FUSION TABLE DAN SQL 10 MENAMPILKAN PETA TEMATIK 12 SELECT LAYER BY PULAU 17 MENAMPILKAN INFO PROVINSI 20 MEMPERINDAH TAMPILAN 22
  • 3. 2 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Google Maps Membuat WebGIS Provinsi Indonesia Menggunakan Google Maps Javascript V3 API Google Maps Javascript V3 API merupakan layanan dari Google Maps yang memungkinkan kita untuk memasang peta pada web dengan menggunakan fitur-fitur dan data yang disediakan oleh Google Maps. Kita bisa dengan mudah menggunakan peta yang disediakan Google Maps, sehingga akan memberi kemudahan pada user yang menggunakan peta karena saat ini masyarakat sudah sangat terbiasa menggunakan Google Maps dalam keseharian hidup mereka. Dalam buku ini akan dijelaskan bagaimana untuk membuat suatu WebGIS menggunakan bantuan Google Maps Javascript V3 API. Kenapa saya sebutkan Google Maps Javascript V3 API, adalah karena Google menyediakan juga Google Maps Android API dimana juga merupakan layanan peta dari Google yang memudahkan kita untuk mengakses peta menggunakan smartphone. Sebelum kita membuat suatu WebGIS, mari kita definisikan terlebih dahulu fungsi apa saja yang aka nada pada WebGIS kita kali ini. ī‚ˇ Menampilkan Base Map ī‚ˇ Menampilkan Polygon Provinsi ī‚ˇ Menampilkan Info Window ī‚ˇ Menampilkan Select Provinsi ī‚ˇ Mengambil dan Menampilkan Data SQL ī‚ˇ Memberi Warna Pada Polygon Provinsi ī‚ˇ Menampilkan Legenda Dan tools yang diperlukan dalam membuat WebGIS menggunakan Google Maps Javascript API adalah sebagai berikut: ī‚ˇ Text Editor : Disini saya menggunakan Notepad++ ī‚ˇ Browser : Disini saya menggunakan Mozilla Firefox dan Google Chrome ī‚ˇ Peta Provinsi Indonesia dalam format KML ī‚ˇ Web Server Local (saya menggunakan paket XAMPP) Jika tools dan bahan yang dibutuhkan sudah siap, sekarang mari kita buat WebGIS Provinsi Indonesia
  • 4. 3 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Hello World Dalam belajar membuat sesuatu yang berhubungan dengan bahasa pemrograman, pertama kali biasanya kita membuat suatu Hello World dengan bahasa pemrograman tertentu. Jika kita belajar Google Maps, kita membuat Hello World dengan menampilkan peta dari Google Maps itu sendiri. Untuk menampilkan peta dari Google Maps Javascript API kita perlu untuk mendapatkan API key. API key digunakan untuk mengakses peta dan fitur yang disediakan oleh Google Maps. Untuk mendapatkannya ikuti langkah berikut: ī‚ˇ Kunjungi Google APIs Console di https://code.google.com/apis/console setelah itu login dengan Google Account anda. ī‚ˇ Pilih APIs & auth pada menu sebelah kiri, Setelah itu pilih APIs ī‚ˇ Anda akan melihat list API yang disediakan Google, pilih Google Maps API v3 lalu aktifkan. ī‚ˇ Pilih credentials pada menu sebelah kiri, setelah itu klik Create New Key Anda akan melihat bagian Simple API Access, yang akan digunakan nanti adalah Key for browser apps. Bagian yang berwarna hijau adalah API Key yang akan anda gunakan nanti.
  • 5. 4 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Setelah itu mari kita buka Text Editor kita untuk memulai coding, isikan kode berikut pada Text Editor anda <!DOCTYPE html> <html> <head> <title>Peta Provinsi</title> <meta name="viewport" content="initial-scale=1.0, user- scalable=no" /> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #map_canvas { height: 100% ; width: 100%} </style> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API Key Anda&sensor=false"> </script> <script type="text/javascript"> function initialize() { var mapOptions = { center: new google.maps.LatLng(-6.224521,106.840553), zoom: 5, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); } </script> </head> <body onload="initialize()"> <div id="map_canvas"></div> </body> </html> Simpan kode diatas dengan nama index.html pada folder web server lokal anda, setelah itu jalankan dengan menggunakan browser anda. Berikut tampilan kode diatas pada browser Google Chrome.
  • 6. 5 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Sekarang mari kita belajar apa arti kode yang kita buat tadi. <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #map_canvas { height: 100% ; width: 100%} </style> Kode diatas adalah kode CSS yang digunakan untuk mengatur tampilan peta. #map_canvas digunakan untuk mendefinisikan tempat dimana map ditampilkan, pada kode diatas map akan ditampilkan dengan tinggi 100% yaitu memuhi body dari halaman html, atau dengan kata lain memenuhi layar browser. <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API Key Anda&sensor=false"> </script> Kode diatas digunakan untuk memanggil API dari Google Maps itu sendiri. Isi key dengan browser key yang telah anda buat tadi, peta tidak akan tampil jika anda tidak memasukkan API key anda. Sensor digunakan untuk mendeteksi apakah aplikasi diakses pada device yang memiliki sensor lokasi atau tidak, karena saya asumsikan kita menggunakan laptop, maka sensor saya isi false. <script type="text/javascript"> function initialize() { var mapOptions = { center: new google.maps.LatLng(-3.337954,117.320251), zoom: 5, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); } </script> Disini kita melihat suatu fungsi javascript yang bernama initialize(). Fungsi Initialize merupakan fungsi pertama yang dipanggil ketika halaman web diload, perhatikan kode html berikut: <body onload="initialize()"> Variabel mapOptions digunakan untuk menampung opsi dari peta yang akan kita tampilkan. Berikut penjelasan dari beberapa opsi yang kita gunakan diatas. ī‚ˇ center : digunakan untuk menentukan titik tengah peta ketika peta di munculkan. ī‚ˇ zoom : digunakan untuk mengatur cakupan peta itu sendiri. Semakin besar zoom nya, semakin kecil dan detail cakupan peta tersebut. ī‚ˇ mapTypeId : digunakan untuk mengatur tipe peta default.
  • 7. 6 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m MapType yang kita buat pada peta secara default adalah RoadMap (Peta Jalan), sebenarnya ada beberapa pilihan tipe peta yang dapat kita gunakan, berikut macam tipe peta yang dapat kita gunakan. ī‚ˇ MapTypeId.ROADMAP menampilkan road map view sebagai default ī‚ˇ MapTypeId.SATELLITE menampilkan Google Earth satelite images ī‚ˇ MapTypeId.HYBRID menampilkan gabungan dari normal dan satelite view ī‚ˇ MapTypeId.TERRAIN menampilkan peta beserta terrain information ī‚ˇ setTilt menampilkan 45 degree imagery var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); Variabel diatas digunakan untuk memunculkan peta pada halaman browser anda. Kode diatas digunakan untuk create peta pada element map_canvas menggunakan opsi yang disimpan pada variabel mapOptions. Untuk lebih jelasnya tentang element map_canvas, lihat kode html berikut: <div id="map_canvas"></div> Menampilkan Polygon Provinsi Indonesia Sekarang kita akan menampilkan Polygon Provinsi di Indonesia. Polygon ini ditampilkan supaya kita bisa melihat lebih jelas dari batas-batas provinsi yang ada di Indonesia. Untuk menampilkan di Google Maps, kita bisa menggunakan dua cara; yang pertama adalah dengan melakukan hosting terhadap file KML(Keyhole Markup Language) sehingga polygon dapat terbaca oleh semua orang; dan yang kedua adalah melakukan upload di Google Fusion Table. Setelah saya mencoba mencari-cari di Internet dan StackOverFlow, cara yang paling efisien dan efektif ternyata menggunakan Google Fusion Table karena sudah Terintegrasi dengan google maps seghingga lebih mudah dan cepat digunakan nantinya. Untuk bisa mengakses Polygon yang berada di Google Fusion Table tentunya kita harus melakukan upload terlebih dahulu terhadap file KML nya. Jika belum silakan download disini http://goo.gl/AoO9LO Setelah itu kita masuk kea kun Google Drive kita, kenapa Google Drive? Karena Google Fusion Table merupakan bagian dari Google Drive īŠ
  • 8. 7 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Setelah kita berhasil masuk menggunakan akun Google kita. Kita buat dulu file Fusion Table nya dengan cara seperti diatas. Createīƒ¨Fusion Table Setelah itu akan muncul window baru, Choose File dan arahkan pada File KML yang telah kita siapkan tadi. Ikuti petunjuk yang ada (Next next aja)
  • 9. 8 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Setelah berhasil kita upload KML kita. Silakan cek petanya, pilih tab Map Of Geometry , jika belum keluar polygonnya silakan pilih toolsīƒ¨select locationīƒ¨(pilih geometry) Dan hasilnya pada Google Fusion Table kita adalah seperti berikut Sudah muncul bukan? Tapi tentunya tidak seperti ini yang kita inginkan, karena kita ingin menampilkan polygon tidak melalui web app dari Google, tapi dari web app kita sendiri.
  • 10. 9 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Tambahkan kode berikut pada index.html yang telah kita buat sebelumnya var layer = new google.maps.FusionTablesLayer({ query: { select: 'geometry', from: '12s5oKFfyL- G_orulSQXuqGvzMGr85H2p6YI5nRM', } }); layer.setMap(map); Script diatas digunakan untuk menampilkan Fusion Table Layer pada Google Maps. Script diatas dapat dibaca seperti berikut, tampilkan Google Maps Fusion Table Layer dengan Polygon ‘geometry’ (nama kolom yang menyimpan latitude longitude/garis lintang bujur) dari tabel dengan kode seperti diatas. Kode tabel dapat diperoleh dengan cara Fileīƒ¨About This Tableīƒ¨Lihat Bagian ID Atau dapat juga dengan cara melihat Parameter Get doc id pada URL browser anda, lihat bagian yang saya warnai merah dibawah. https://www.google.com/fusiontables/data?docid=12s5oKFfyL- G_orulSQXuqGvzMGr85H2p6YI5nRM#map:id=3 Selain itu jangan lupa set Data pada Fusion Table anda menjadi public, karena data yang ada tidak bisa diakses jika kita Share Settingnya masih private. Klik Button Share yang ada di pojok kanan atas, lalu akan muncul tampilan seperti berikut:
  • 11. 10 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Change dari private menjadi public. Dan mari kita lihat di aplikasi WebGIS kita. Sudah muncul polygonnya dan kita juga sudah ada fitur info window yang akan muncul ketika kita klik polygon salah satu provinsi tertentu. Mashup Data Google Fusion Table dan SQL Kita tidak akan hanya menampilkan polygon dari Fusion Table saja, tetapi kita juga akan menampilkan suatu Peta Tematik yang memiliki beberapa warna. Berikut contoh peta yang akan kita buat pada step ini.
  • 12. 11 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Peta Tematik diatas adalah Peta Tematik yang menunjukkan jumlah penduduk Indonesia. Berikut pembagiannya: ī‚ˇ < 3 juta : warna hijau ī‚ˇ 3-6 juta : warna kuning ī‚ˇ >6 juta : warna merah Jumlah penduduk yang digunakan untuk membedakan warna dari polygon diatas akan kita simpan pada database MySQL. Pembagian diatas saya hanya gunakan sebagai contoh. Silakan import data SQL jumlah penduduk berikut : http://goo.gl/y8oBxY Setelah di import, kita tidak bisa langsung mengakses data tersebut menggunakan javascript, kita perlu membuat suatu service PHP yang menjembatani antara SQL dan aplikasi. Berikut kode PHP yang kita buat. <?php $server = "localhost"; $username = "username database anda"; $password = "password database"; $database = "indonesia"; $con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error()); mysql_query('SET CHARACTER SET utf8'); mysql_select_db($database, $con); $sql = "SELECT * FROM penduduk"; $result = mysql_query($sql) or die ("Query error: " . mysql_error()); $records = array(); while($row = mysql_fetch_assoc($result)) { $records[] = $row; } mysql_close($con); $data = "{"provinsi" : ".json_encode($records)."}"; echo $data; ?> Kode PHP diatas mengubah output SQL yang kita miliki menjadi JSON format yang dimengerti oleh bahasa Javascript. Simpan dengan nama data.php lalu cek di browser untuk memastikan kode PHP yang dibuat benar atau tidak. Jika benar maka akan keluar output JSON seperti berikut:
  • 13. 12 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Menampilkan Peta Tematik Setelah kita mempunyai service berbentuk PHP yang dapat kita akses, sekarang kita dapat langsung memanggil data SQL yang kita simpan. Dengan memanfaatkan kolom jumlah penduduk yang ada pada data kita, kita akan membedakan warna dari tiap polygon berdasarkan kriteria jumlah penduduk. Tambahkan script berikut pada fungsi initialize: $.ajax({ type:'GET', url:'data.php', dataType:'json', success: function(data) { var min=""; var med=""; var max=""; var style; var provinsi,ibukota,jumlah; for(var i=0;i<data.provinsi.length;i++) { jumlah=data.provinsi[i].jumlah; kode=data.provinsi[i].kode; if(jumlah<=3000000) { min+=kode+","; } else if(jumlah>3000000&&jumlah<6000000) { med+=kode+","; } else if(jumlah>=6000000)
  • 14. 13 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m { max+=kode+","; } } fusiontablelayer(min,med,max); } }); Fungsi script diatas adalah untuk memanggil data dari SQL yang kita miliki, tentu saja dengan bantuan Service yang kita buat menggunakan PHP. $.ajax({ type:'GET', url:'data.php', dataType:'json', success: function(data) { Script ajax diatas menggunakan jQuery library, jadi jangan lupakan script berikut di Head HTML anda <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script > Kembali ke script ajax yang ada diatas, url digunakan untuk memanggil file Service PHP yang kita buat tadi, dan dataType adalah jenis data yang kita inginkan. Data JSON yang diperoleh dari data.php akan disimpan pada variabel data yang terdapat pada bagian success. var min=""; var med=""; var max=""; var provinsi,ibukota,jumlah; Variabel diatas digunakan untuk menyimpan data yang kita perlukan nanti. Variabel min digunakan untuk menyimpan kode wilayah yang penduduknya kurang dari 3 juta, variabel med digunakan untuk menyimpan kode wilayah yang penduduknya 3-6 juta dan variabel max tentunya untuk menyimpan kode wilayah yang penduduknya lebih dari 6 juta. Kode dibawah ini yang digunakan untuk menyimpan kode wilayah berdasarkan pembagian jumlah penduduknya. for(var i=0;i<data.provinsi.length;i++) { jumlah=data.provinsi[i].jumlah; kode=data.provinsi[i].kode; if(jumlah<=3000000) { min+=kode+","; } else if(jumlah>3000000&&jumlah<6000000) {
  • 15. 14 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m med+=kode+","; } else if(jumlah>=6000000) { max+=kode+","; } For diatas digunakan untuk melakukan iterasi terhadap seluruh data JSON yang didapat. Statements if else tentu saja digunakan untuk membagi kode wilayah berdasarkan jumlah penduduk. Kode wilayah yang ada disimpan pada suatu variabel dengan tipe data String (ex : 34,35,36,) Kita juga melihat kode berikut: fusiontablelayer(min,med,max); Kode diatas digunakan untuk memanggil function fusiontablelayer, selain itu kode ini juga mengirimkan data kode wilayah yang disimpan dalam variabel min, med, dan max. Untuk itu kita perlu menambahkan fungsi berikut: function fusiontablelayer(kode1,kode2,kode3) { kode1=removeLastString(kode1); kode2=removeLastString(kode2); kode3=removeLastString(kode3); var layer = new google.maps.FusionTablesLayer({ query: { select: 'geometry', from: '12s5oKFfyL- G_orulSQXuqGvzMGr85H2p6YI5nRM', }, styles: [{ where: 'kode IN ('+kode1+')', polygonOptions:{ fillColor:'#00FF00' } },{ where: 'kode IN ('+kode2+')', polygonOptions:{ fillColor:'#FFFF00' } },{ where: 'kode IN ('+kode3+')', polygonOptions:{ fillColor:'#FF0000' } }] }); layer.setMap(map); } function removeLastString(kode) { kode = kode.substring(0,kode.length-1)+''; return kode;
  • 16. 15 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m } Kita melihat dua buah function pada kode sebelumnya. Fungsi pertama digunakan untuk memanggil fusion table layer dan fungsi kedua digunakan oleh fungsi fusion table layer untuk memanipulasi String. Function removeLastString menghilangkan koma terakhir pada variabel min, med dan max; koma terakhir perlu dihilangkan supaya sesuai dengan format yang dibutuhkan untuk melakukan query ke Google Fusion Table Layer. var layer = new google.maps.FusionTablesLayer({ query: { select: 'geometry', from: '12s5oKFfyL- G_orulSQXuqGvzMGr85H2p6YI5nRM', }, styles: [{ where: 'kode IN ('+kode1+')', polygonOptions:{ fillColor:'#00FF00' } },{ where: 'kode IN ('+kode2+')', polygonOptions:{ fillColor:'#FFFF00' } },{ where: 'kode IN ('+kode3+')', polygonOptions:{ fillColor:'#FF0000' } }] }); layer.setMap(map); Query diatas sama seperti sebelumnya, yang berbeda adalah disini sudah menerapkan Style pada polygon. Fungsi where pada query google fusion table adalah untuk menambahkan kondisi tertentu, jadi untu kondisi kode wilayah tertentu maka ganti warna nya menjadi warna tertentu. Silakan coba kita jalankan WebGIS yang telah dibuat. Jika kode yang dibuat benar maka akan keluar tampilan seperti berikut:
  • 17. 16 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Jika kita lihat peta diatas, tentunya kita tidak tahu apa arti dari warna merah, kuning, dan hijau. Supaya user dapat mengerti arti warna diatas kita dapat menambahkan suatu legenda. Kali ini kita akan menambahkan legenda dibagian pojok kanan bawah peta. Tambahkan function berikut pada kode javascript kita. function legenda(controlDiv,map){ controlDiv.style.backgroundColor = 'white'; controlDiv.title = 'Legenda'; var isi1 = "<table class="table table- condensed"><th><td>Legenda</td></th>"; var isi2 = "<tr><td style="background- color:#00FF00">&nbsp;&nbsp;&nbsp;</td><td><3 juta</td></tr>"; var isi3 = "<tr><td style="background- color:#FFFF00"> </td><td>3-6 juta</td></tr>"; var isi4 = "<tr><td style="background- color:#FF0000"> </td><td>>6 juta</td></tr>"; var isi5 = "</table>"; controlDiv.innerHTML = isi1+isi2+isi3+isi4+isi5; } Setelah itu tambahkan kode berikut pada akhir function initialize untuk menampilkan legenda yang telah kita buat pada function legenda. var homeControlDiv=document.createElement('div'); var homeControls=new legenda(homeControlDiv,map); homeControlDiv.index = 1; map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(homeCo ntrolDiv); Setelah itu jika kita jalankan pada browser akan muncul legenda seperti berikut:
  • 18. 17 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Select Layer By Pulau Setelah kita bisa menampilkan peta tematik satu Indonesia, sekarang kita akan menampilkan peta tematik per pulau. Pertama-tama tentunya kita buat selector di HTML nya, kali ini untuk selector nya kita akan menggunakan radio button. Jika sebelumnya kita sudah mempunyai div yang berisi map_canvas, tambahkan kode nya menjadi seperti berikut: <div id="title"><center> <h1>Jumlah Penduduk Indonesia 2010</h1> </center></div> <div id="map_canvas"></div> <div id="sidebar"> <legend>Provinsi By Pulau</legend> <input type="radio" name="pulau" value="Jawa">Jawa<br> <input type="radio" name="pulau" value="Sumatera> Sumatera</br> <input type="radio" name="pulau" value="Kalimantan"> Kalimantan</br> <input type="radio" name="pulau" value="Sulawesi"> Sulawesi</br> <input type="radio" name="pulau" value="Papua">Papua</br> <button onclick="initialize()">Show All</button> <div id="showdata"> </div> </div> Disini kita memiliki dua buah div dengan id title dan sidebar. Title digunakan untuk memberikan judul, dan sidebar digunakan sebagai tempat untuk meleakkan checkbox.
  • 19. 18 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Selain itu supaya tampilan peta nya terpartisi dengan baik, silakan ubah kode style css yang berada pada head menjadi seperti berikut: html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #title { height: 10%; width : 100%; } #sidebar {height : 85% ; width : 20%; float : left} #map_canvas { height : 85% ; width : 80%; float : right} Jika kita jalankan, WebGIS kita akan terlihat seperti berikut: Sekarang, kita akan membuat handler bagi checkbox yang sudah kita buat pada javascript kita. Tambahkan kode berikut di luar fungsi manapun, tetapi masih berada di dalam tag script. $(document).ready(function(){ $('input[name="pulau"]').on('change', function(){ layer.setMap(null); var value=$(this).val(); var jawa="31,32,33,34,35,36"; var sumatera="11,12,13,15,16,17,18,14"; var kalimantan="61,62,63,64"; var sulawesi="71,72,73,74,75,76"; var papua="91,94"; switch(value) { case "Jawa": layerByPulau(jawa); break; case "Sumatera": layerByPulau(sumatera); break; case "Kalimantan":
  • 20. 19 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m layerByPulau(kalimantan); break; case "Sulawesi": layerByPulau(sulawesi); break; case "Papua": layerByPulau(papua); break; default: } }); }); Kode diatas tentunya menggunakan bantuan JQuery di dalam penulisannya. Secara singkat kode diatas mempunyai fungsi membaca nilai atau value dari checkbox yang kita buat setiap terjadi perubahan (misal checkbox Jawa di pilih, maka fungsi tersebut akan membaca value dari checkbox Jawa), setelah mendapatkan value nya maka kode diatas akan memanggil fungsi layerByPulau yang akan kita buat nanti. var jawa="31,32,33,34,35,36"; var sumatera="11,12,13,15,16,17,18,14"; var kalimantan="61,62,63,64"; var sulawesi="71,72,73,74,75,76"; var papua="91,94"; Jangan bingung ketika melihat variabel diatas, variabel diatas digunakan untuk menyimpan kode Provinsi di setiap pulau. Sekarang kita akan buat function baru yang bernama layerByPulau, function ini yang akan dipanggil oleh handler dari checkbox tadi. Tambahkan function berikut pada tag javascript. function layerByPulau(kodeWilayah) { layer = new google.maps.FusionTablesLayer({ query: { select: 'geometry', from: 'id fusion table', where: 'kode IN ('+kodeWilayah+')', }, options: { suppressInfoWindows:true }, styles: [{ where: 'kode IN ('+tampungKode1+')', polygonOptions:{ fillColor:'#00FF00' } },{ where: 'kode IN ('+tampungKode2+')', polygonOptions:{ fillColor:'#FFFF00' }
  • 21. 20 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m },{ where: 'kode IN ('+tampungKode3+')', polygonOptions:{ fillColor:'#FF0000' } }], }); layer.setMap(map); } Kode diatas hampir sama dengan kode sebelumnya untuk memanggil fusion table layer, kita hanya menambahkan kondisi pada query pertama. Selain itu juga tambahkan tampungKode1/2/3 pada variabel javascript seperti berikut: Pada awal tag javascript var tampungKode1,tampungKode2,tampungKode3; Dan pada awal function fusiontablelayer, setelah String koma (,) dihilangkan tampungKode1=kode1;tampungKode2=kode2;tampungKode3=kode3; Jika sudah kita bisa langsung jalankan WebGIS kita dan akan terlihat sebagai berikut jika saya memilih pulau sumatera. Menampilkan Info Provinsi Sekarang kita akan menampilkan info provinsi yang berada pada data SQL kita ke sidebar ketika salah satu polygon provinsi di pilih. Untuk bisa menampilkan itu pertama kita hilangkan info window nya, pastikan ada option berikut ketika memanggil fusiontable layer.
  • 22. 21 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m options: { suppressInfoWindows:true }, Setelah itu kita tambahkan event listener berikut setelah setiap kode layer.setMap(map). google.maps.event.addListener(layer,'click',function(e){showData(e )}); Event listener diatas merupakan event yang muncul ketika layer fusion table di click. Setelah layer di klik, maka function showData akan dipanggil, tambahkan function showData berikut pada javascript yang kita buat. function showData(e) { var kodeBPS=e.row['kode'].value; var location=e.latLng; $.ajax({ type:'GET', url:'data.php', dataType:'json', success: function(data) { var isi=""; for(var i=0;i<data.provinsi.length;i++) { if(data.provinsi[i].kode==kodeBPS) { isi+="<b>Provinsi : </b>"+data.provinsi[i].provinsi+"</br>"; isi+="<b>Ibukota : </b>"+data.provinsi[i].ibukota+"</br>"; isi+="<b>Jumlah Penduduk : </b>"+data.provinsi[i].jumlah+" Jiwa</br>"; $('#showdata').html(isi); infoWindow.setContent("<b>"+data.provinsi[i].provinsi+"</b>"); infoWindow.setPosition(location); infoWindow.open(map); } } } }); } Kode diatas fungsinya untuk mengambil dan menampilkan data SQL yang terdapat pada database sesuai dengan layer polygon yang di klik. Selain itu kode diatas juga digunakan untuk menampilkan info window pada peta yang berisi nama provinsi saja. Tambahkan kode berikut untuk deklarasi infoWindow pada bagian awal tag javascript.
  • 23. 22 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m var infoWindow = new google.maps.InfoWindow(); Jika kita coba jalankan WebGIS kita pada browser akan menjadi seperti berikut: Memperindah Tampilan Sekarang kita akan sedikit memperindah tampilan dari peta kita diatas, kita akan menggunakan twitter bootstrap 2.3; silakan langsung download di website resmi dari twitter bootstrap atau bisa download di link berikut: http://goo.gl/p1RFXn Extract file yang ada ke dalam folder yang sama dengan project yang kita buat. Setelah itu tambahkan kode berikut pada tag head <link href="css/bootstrap.css" rel="stylesheet" media="screen"> <link href="css/bootstrap-responsive.css" rel="stylesheet" media="screen"> Sesuaikan path css anda dengan tempat anda menyimpan css dari twitter bootstrap tadi. Selain itu tambahkan kode berikut sebelum tag penutup body. <script src="js/bootstrap.js"></script> Sesuaikan juga path nya sesuai tempat menyimpan file js dari twitter bootstrap tadi.
  • 24. 23 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m Berikut adalah kode lengkap yang kita buat dari awal sampai akhir, silakan modifikasi untuk efektifitas dan penggunaan masing-masing <!DOCTYPE html> <html> <head> <title>Peta Provinsi</title> <meta name="viewport" content="initial-scale=1.0, user- scalable=no" /> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #title { height: 10%; width : 100%; } #sidebar {height : 85% ; width : 20%; float : left} #map_canvas { height : 85% ; width : 80%; float : right} </style> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=APIKEYGooglemaps& sensor=false"> </script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min .js"></script> <link href="css/bootstrap.css" rel="stylesheet" media="screen"> <link href="css/bootstrap-responsive.css" rel="stylesheet" media="screen"> <script type="text/javascript"> var map,layer; var tampungKode1,tampungKode2,tampungKode3; var infoWindow = new google.maps.InfoWindow(); function initialize() { google.maps.visualRefresh = true; var mapOptions = { center: new google.maps.LatLng(- 3.337954,117.320251), zoom: 5, mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); $.ajax({ type:'GET', url:'data.php', dataType:'json', success: function(data) { var kel1,kel2,kel3; var min=""; var med=""; var max=""; var jumlah,kode; for(var i=0;i<data.provinsi.length;i++) { jumlah=data.provinsi[i].jumlah;
  • 25. 24 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m kode=data.provinsi[i].kode; if(jumlah<=3000000) { min+=kode+","; } else if(jumlah>3000000&&jumlah<6000000) { med+=kode+","; } else if(jumlah>=6000000) { max+=kode+","; } } fusiontablelayer(min,med,max); } }); var homeControlDiv=document.createElement('div'); var homeControls=new legenda(homeControlDiv,map); homeControlDiv.index = 1; map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(homeCo ntrolDiv); } function fusiontablelayer(kode1,kode2,kode3) { kode1=removeLastString(kode1); kode2=removeLastString(kode2); kode3=removeLastString(kode3); tampungKode1=kode1;tampungKode2=kode2;tampungKode3=kode3; layer = new google.maps.FusionTablesLayer({ query: { select: 'geometry', from: 'id fusion table', }, options: { suppressInfoWindows:true }, styles: [{ where: 'kode IN ('+kode1+')', polygonOptions:{ fillColor:'#00FF00' } },{ where: 'kode IN ('+kode2+')', polygonOptions:{ fillColor:'#FFFF00' } },{ where: 'kode IN ('+kode3+')', polygonOptions:{ fillColor:'#FF0000' } }] });
  • 26. 25 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m layer.setMap(map); google.maps.event.addListener(layer,'click',function(e){showData(e )}); } function removeLastString(kode) { kode = kode.substring(0,kode.length-1)+''; return kode; } //buat nambahin legenda function legenda(controlDiv,map){ controlDiv.style.backgroundColor = 'white'; controlDiv.title = 'Legenda'; var isi1 = "<table class="table table- condensed"><th><td>Legenda</td></th>"; var isi2 = "<tr><td style="background- color:#00FF00">&nbsp;&nbsp;&nbsp;</td><td><3 juta</td></tr>"; var isi3 = "<tr><td style="background- color:#FFFF00"> </td><td>3-6 juta</td></tr>"; var isi4 = "<tr><td style="background- color:#FF0000"> </td><td>>6 juta</td></tr>"; var isi5 = "</table>"; controlDiv.innerHTML = isi1+isi2+isi3+isi4+isi5; } function layerByPulau(kodeWilayah) { layer = new google.maps.FusionTablesLayer({ query: { select: 'geometry', from: 'id fusion table ', where: 'kode IN ('+kodeWilayah+')', }, options: { suppressInfoWindows:true }, styles: [{ where: 'kode IN ('+tampungKode1+')', polygonOptions:{ fillColor:'#00FF00' } },{ where: 'kode IN ('+tampungKode2+')', polygonOptions:{ fillColor:'#FFFF00' } },{ where: 'kode IN ('+tampungKode3+')', polygonOptions:{ fillColor:'#FF0000' } }], }); layer.setMap(map); google.maps.event.addListener(layer,'click',function(e){showData(e )});
  • 27. 26 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m } function showData(e) { var kodeBPS=e.row['kode'].value; var location=e.latLng; $.ajax({ type:'GET', url:'data.php', dataType:'json', success: function(data) { var isi=""; for(var i=0;i<data.provinsi.length;i++) { if(data.provinsi[i].kode==kodeBPS) { isi+="<b>Provinsi : </b>"+data.provinsi[i].provinsi+"</br>"; isi+="<b>Ibukota : </b>"+data.provinsi[i].ibukota+"</br>"; isi+="<b>Jumlah Penduduk : </b>"+data.provinsi[i].jumlah+" Jiwa</br>"; $('#showdata').html(isi); infoWindow.setContent("<b>"+data.provinsi[i].provinsi+"</b>"); infoWindow.setPosition(location); infoWindow.open(map); } } } }); } $(document).ready(function(){ $('input[name="pulau"]').on('change', function(){ layer.setMap(null); var value=$(this).val(); var jawa="31,32,33,34,35,36"; var sumatera="11,12,13,15,16,17,18,14"; var kalimantan="61,62,63,64"; var sulawesi="71,72,73,74,75,76"; var papua="91,94"; switch(value) { case "Jawa": layerByPulau(jawa); break; case "Sumatera": layerByPulau(sumatera); break; case "Kalimantan": layerByPulau(kalimantan); break; case "Sulawesi": layerByPulau(sulawesi); break; case "Papua": layerByPulau(papua); break; default:
  • 28. 27 | h t t p : / / s l e e p i n g t u x . b l o g s p o t . c o m } }); }); </script> </head> <body onload="initialize()"> <div id="title"><center><h1>Jumlah Penduduk Indonesia 2010</h1></center></div> <div id="map_canvas"></div> <div id="sidebar"> <legend>Provinsi By Pulau</legend> <input type="radio" name="pulau" value="Jawa">Jawa<br> <input type="radio" name="pulau" value="Sumatera">Sumatera</br> <input type="radio" name="pulau" value="Kalimantan" >Kalimantan</br> <input type="radio" name="pulau" value="Sulawesi">Sulawesi</br> <input type="radio" name="pulau" value="Papua">Papua</br></br> <button onclick="initialize()" class="btn btn- primary">Show All</button> </br></br> <pre> <div id="showdata"> </div> </pre> </div> <script src="js/bootstrap.js"></script> </body> </html> Dan berikut adalah tampilan WebGIS yang telah selesai kita buat. Sekian tutorial kita kali ini, semoga bermanfaat.