Obyektif:
- Menyalin access-token dari situs MapBox
- Menyiapkan CSS dan JS files dari Leaflet
- Menempatkan peta di halaman web
- Menciptakan marker, circle dan polygon di peta
- Menggunakan event 'click' untuk mengakses marker dan
circle
Daftar Isi
Leaflet Mapbox.......................................................................................1
Access-Token .....................................................................................1
Latitude dan Longitude ........................................................................1
Leaflet ............................................................................................3
Markers, circles and polygons .................................................................4
Popup .............................................................................................5
Mengendalikan Event ...........................................................................6
Tutorial ..............................................................................................7
Inisialisasi Map ...................................................................................9
Source Code: ...................................................................................11
File: css/peta.css ..............................................................................12
Tugas 1: ............................................................................................14
Tugas 2: ............................................................................................15
Leaflet Mapbox
Menampilkan peta (map) di Web merupakan hal yang relatif mudah bila
menggunakan library atau services dari pihak ketiga seperti dalam hal ini adalah
Leaflet. Library ini disiapkan untuk mengakses Mapbox openstreet, sehingga
akses program dilakukan dengan cara yang relatif lebih mudah ketimbang harus
memprogramkan dari nol. Penggunaan software ini adalah gratis (lihat batasan
penggunaan software pada https://leafletjs.com)
Access-Token
Untuk dapat mengakses peta di MapBox diperlukan 'access-token' yang harus
diambil dari situs Mapbox. Untuk mudahnya dapat di-google "mapbox access
token" untuk dapat langsung ke halaman token tersebut. Bila belum mempunyai
account, registrasi account baru dengan password.
sumber: https://www.ubergizmo.com/how-to/read-gps-coordinates/
Untuk melihat koordinat dari Google Map, klik kanan pada map, kemudian pilih
submenu "what's here", setelah dipilih, info lokasi akan muncul.
Siapkan style untuk penempatan map, dengan tinggi 'fixed' dalam pixel.
<style>
#mapid { height: 180px; }
</style>
Pada body html, buat <div> untuk penempatan peta yang akan dibaca.
<div id="mapid"></div>
Tentukan koordinat longitude dan langitude , dalam contoh ini diambil koordinat
Legian, sebuah daerah di Bali. Dari Google Map diketahui bahwa koordinatnya
adalah :
[-8.701660,115.169856]
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?
access_token={accessToken}', {
attribution: 'Map data © <a href="https://
www.openstreetmap.org/">OpenStreetMap</a> contributors, <a
href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>,
Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 18,
id: 'mapbox.streets',
accessToken: 'your.mapbox.access.token'
}).addTo(mymap);
Selain lapisan awal map , bisa ditambahkan marker, polylines, polygons, circles,
and popups. Contoh membuat marker:
Popup
Popup diguankan sebagai informasi yang muncul pada saat marker atau circle
dipilih melalui mouse-klik.
Info bisa didapat langsung pada saat inisialisasi dengan menggunakan metode
openPopup().
function onMapClick(e) {
console.log("Peta diklik pada posisi " + e.latlng);
}
mymap.on('click', onMapClick);
Event ini akan menyampaikan pesan melalui console.log melaporkan posisi lokasi
yang dipilih (diklik). Program berikut menampilkan popup ketimbang
console.log.
var popup = L.popup();
function onMapClick(e) {
popup
.setLatLng(e.latlng)
.setContent("Lokasi yang dipilih: " + e.latlng.toString())
.openOn(mymap);
}
mymap.on('click', onMapClick);
$ cd $HOME
$ cd public
$ mkdir project2 (kalau belum ada)
$ cd project2
$ mkdir css (untuk peta.css)
$ mkdir js (untuk peta.js)
$ (text-editor) peta.html
Hasil:
$HOME ------public
|
+ project1
|
+ project2
| peta.html
+ css --- peta.css
+ js --- peta.js
|
Agar halaman web menjadi responsif, panjang dan lebar layar harus dikuasi
sepenuhnya sebagai width dan height. File css ditempatkan pada folder css .
Jangan lupa dengan meta tag viewport untuk mobile sebagai baris pertama di
<html> <head> . Sertakan file css/mystyle.css sebagai link.
<html>
<head>
<meta name="viewport" content="width=device-width, initial-
scale=1.0, user-scalable=no" />
<link rel="stylesheet" type="text/css" href="css/peta.css">
</head>
6. Selanjutnya di peta.html siapkan tempat untuk map, untuk gambar dan untuk
review dengan menggunakan CSS-Grid:
<body>
<div class='container'>
<div class='peta' id='mapid'> </div>
<div class='gambar'>
Gambar Disini
</div>
<div class='review'>Tulis review disini</div>
</div>
</body>
.container {
display: grid;
height: 100%;
grid-gap: 4px;
grid-template-columns: repeat(8,1fr);
.gambar {
background: green;
grid-column: 1/6;
}
.review {
background: yellow;
grid-column:6/-1;
}
1/-1 mempunyai arti, tempati dari kolom pertama hingga kolom terakhir. Angka
minus 1 ini menggambarkan kolom akhir (last-column) yang memudahkan desain
jika jumlah cell berubah. Bila itu terjadi, komponen tersebut tidak terpengaruh.
Dari CSS-Grid tersebut terbaca bahwa baris pertama diberikan untuk peta,
sedangkan baris kedua dibagi antara gambar dan review dengan proposi 6/8 dan
2/8 . Bila diinginkan ubah kompsisi ini menjadi 5/8 dan 3/8.
Inisialisasi Map
Map diinisialisasi dengan menggunakan JavaScript:
<script>
let mymap = L.map('mapid').setView([-8.701660,115.169856], 14);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?
access_token={accessToken}', {
attribution: 'Map data © <a href="https://
www.openstreetmap.org/">OpenStreetMap</a> contributors, <a
href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>,
Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 20,
id: 'mapbox.streets',
accessToken:
'pk.eyJ1IjoiaWZpa2FyaWZpbiIsImEiOiJjamxndm83cTQwZjYwM3BvMHBma3dndGJq
In0.6LyWJiWv-yvp7mNPbyeb'
}).addTo(mymap);
</script>
Perhatikan bahwa accessToken di "copy paste" dari situs public Mapbox.com yang
sebelumnya telah disiapkan.
"https://www.mapbox.com/account/access-tokens"
8. Salin token tersebut dengan memilih icon di sebelah kanan, dan selipkan
pada:
accessToken: "pkxxxxxx ---- access token Mapbox ---- xxxxx" , lihat contoh
diatas sebelumnya. Token diawali dengan "pk ..." .
</head>
<body>
<div class='container'>
<div class='peta' id='mapid'> </div>
<div class='gambar'>
Gambar disini
</div>
<div class='review'>
Tulis review disini
</div>
</div>
<script>
var mymap = L.map('mapid').setView([-8.701660,115.169856], 14);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?
access_token={accessToken}', {
attribution: 'Map data © <a href="https://
www.openstreetmap.org/">OpenStreetMap</a> contributors, <a
href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>,
Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 20,
id: 'mapbox.streets',
accessToken:
'pk.eyJ1IjoiaWZpa2FyaWZpbiIsImEiOiJjamxndm83cTQwZjYwM3BvMHBma3dndGJq
In0.6LyWJiWv-yvp7mNPbyebYA'
}).addTo(mymap);
</script>
</body>
</html>
File: css/peta.css
body {
padding: 0;
margin: 0;
}
.container {
display: grid;
.gambar {
background: green;
grid-column: 1/6;
}
.review {
background: yellow;
grid-column:6/-1;
}
File: peta.html
</script>
<script src="js/peta.js">
</script>
</body>
</html>
Tulis lokasi ini sebagai marker, sehingga apabila dipilih, maka pesan sponsor
keluar.
Checkpoint
Program berhasil menampilkan marker, dan bila di-click, akan
menampilkan pesan sponsor.
Petunjuk
Tambahkan marker menjadi 5 buah dan simpan dalam Array places dengan
menggunakan format JSON.
let places= [
{"lokasi": [-6.221028, 106.791434], "sponsor" : "Restoran
Spanyol"},
{"lokasi": [-6.219912, 106.791239], "sponsor" : "Warung Kopi"},
{"lokasi": [-6.220529, 106.789848], "sponsor" : "Depot Ikan
Bakar"},
{"lokasi": [-6.222977, 106.789152], "sponsor" : "Gudang STEAK"},
{"lokasi": [-6.222043, 106.791070], "sponsor" : "Seafood!!"}
];
Variable places adalah array yang berisi JSON obyek, dengan properti location
dan sponsor.
<div class='container'>
<div class='peta' id='mapid'>
</div>
<div class='gambar' id='gmb'>
Gambar disini
</div>
<div class='review' id='review'>
Tulis review disini
</div>
</div>
Tugas ke 3 akan diberikan jika tugas 1 dan 2 sudah selesai (minggu depan).