Simple Example of Using ArcGIS Maps SDK For JavaScript 1680955901
Simple Example of Using ArcGIS Maps SDK For JavaScript 1680955901
ISBN: 978-602-52770-7-8
Penerbit:
Website www.singkong.dev
Email [email protected]
1
Kata Pengantar
Buku ini berisi sejumlah contoh source code dan penjelasan langkah
demi langkah yang mudah dipahami untuk membuat aplikasi web
dengan fitur mapping, menggunakan ArcGIS Maps SDK for JavaScript.
Dr. Noprianto
Dengan hanya membutuhkan Java versi 5.0 (atau lebih baru), interpreter
bahasa Singkong (dan program yang Anda buat) dapat berjalan pada
berbagai sistem operasi, mulai dari versi terbaru, ataupun yang dirilis
seperempat abad lalu.
Pada saat buku ini ditulis, telah terdapat 6 buku pemrograman Singkong
yang ditulis secara kolaboratif, dan dapat dibaca/didownload gratis dari:
https://singkong.dev. Beberapa buku lainnya sedang dipersiapkan.
2
Persiapan
3
6. Kita akan membutuhkan akun developer ArcGIS, dimana
pendaftaran perlu dilakukan. Pendaftaran akun akan dibahas
di bab tersendiri. Pada saat buku ini ditulis:
a. Kita hanya membutuhkan alamat email saja untuk
pendaftaran tersebut.
b. Apa yang kita bahas dalam buku ini cukup dalam
batasan versi free dari akun developer.
4
Contoh 1: Template kode HTML sederhana
5
Karena kita menggunakan ArcGIS Maps SDK for JavaScript, maka kita
perlu menggunakan CSS dan JavaScript dari ArcGIS, sebagaimana
<link> dan <script> pada kode tersebut.
6
Registrasi Developer Account dan API Key
8
• I want to build mapping applications using ArcGIS location
services.
• Pada bagian Recent API Keys, pada Default API Key, kliklah
tombol Click to copy, atau Show value dan kopikan ke editor
teks.
• Klik link API Keys atau tombol Manage all API Keys, dimana
kita bisa menggunakan Default API Key tadi, atau membuat
API Key baru dengan tombol New API Key. Kopikanlah ke
editor teks.
9
Sesuaikanlah “API KEY” dengan API Key yang didapatkan sebelumnya.
Pastikanlah kode tersebut diantara:
<script src="https://js.arcgis.com/4.26/"></script>
dan
</head>
Catatan:
10
Contoh 2: Menampilkan Basemap
11
Kita dapat melihat tampilan seperti gambar sebelumnya. Sebuah
Map, dengan basemap adalah arcgis-streets, ditampilkan pada
sebuah MapView dengan titik tengah dan level zoom tertentu. Kita
bisa scroll dan zoom lokasi tertentu apabila diinginkan.
Sampai di sini, kita mendapatkan hasil yang luar biasa, dengan begitu
sedikit jumlah baris kode. Mari kita bahas beberapa hal yang mungkin
menarik:
Cari? Iya. Kita pun akan membahas contohnya di buku ini, bagaimana
membangun aplikasi sederhana yang dapat mencari dan
menginformasi longitude dan latitude dari hasil pencarian.
14
Contoh 3: Mencari dan Mendapatkan Longitude
dan Latitude
Menjadi:
require(
["esri/config", "esri/Map",
"esri/views/MapView", "esri/widgets/Search"],
function (esriConfig, Map, MapView, Search) {
15
const search = new Search({
view: view
});
view.ui.add(search, 'top-right');
search.on('select-result', function(e) {
const g = e.result.feature.geometry;
alert('LAT: ' + g.latitude + ' LON: ' +
g.longitude);
});
16
Dengan cara demikian, kita mendapatkan latitude dan longitude yang
digunakan pada contoh sebelumnya.
18
Contoh 4: Menggunakan CSV Layer
19
Sebagai contoh sederhana, mari kita contohkan beberapa baris
berikut, yang merupakan data beberapa gunung di Indonesia. Nilai
latitude dan longitude tentunya didapatkan dengan contoh aplikasi
pencarian yang telah kita bahas sebelumnya.
id name latitude longitude province peak
1 Ceremai -6.893059999999941 108.40694000000008 Jawa 3078
Barat
2 Gede -6.790249999999955 106.98452000000009 Jawa 3008
Barat
3 Pangrango -6.769999999999922 106.96361000000007 Jawa 3019
Barat
4 Salak -6.715559999999939 106.73389000000007 Jawa 2211
Barat
5 Guntur -7.148419999999949 107.83991000000009 Jawa 2249
Barat
6 Merbabu -7.453609999999969 110.43944000000005 Jawa 3145
Tengah
7 Sumbing -7.381939999999922 110.07528000000009 Jawa 3371
Tengah
21
Kemudian, kita ubah center dan zoom pada view menjadi:
center: [108.40694000000008, -6.893059999999941],
zoom: 7,
Di contoh berikut, kita akan mengubah simbol pada map agar terlihat
lebih jelas.
22
Contoh 5: Menerapkan Renderer pada Layer
23
Dengan terkoneksi ke internet, bukalah file renderer.html. Lihatlah
bahwa simbol yang tampil mungkin dapat terlihat lebih jelas, dengan
warna dan ukuran berbeda:
25
Dengan terkoneksi ke internet, bukalah file visual.html. Kini, kita bisa
melihat penggunaan warna yang berbeda untuk simbol, berdasarkan
kategori ketinggian tertentu. Luar biasa, bukan?
Di bab berikutnya, kita akan melihat contoh yang dapat kita lakukan
ketika klik dilakukan pada simbol.
26
Contoh 7: Menampilkan Popup
Di bab ini, kita akan mulai dengan cara yang benar-benar mudah dan
cara mudah. Di bab lain, kita akan membahas cara yang lebih sulit.
27
Walau mungkin contoh sebelumnya dapat memenuhi kebutuhan,
kita mungkin ingin menampilkan field tertentu saja, dengan label
berbeda. Atau dengan judul berbeda.
28
Dengan terkoneksi ke internet, bukalah file popup.html. Kliklah pada
salah satu gunung, dan popup sesuai template akan ditampilkan,
seperti pada gambar berikut.
Bisa dilihat, kita memberikan label untuk setiap kolom. Tentunya, per
template tersebut, kita juga bisa tidak menampilkan semua kolom.
29
Bagaimana kalau kita ingin sedikit mengubah bonus yang disertakan
tersebut? Misal dengan dock secara default. Atau dengan tidak
menampilkan navigas 1 of 2 tersebut. Mari kita bahas di bab berikut.
30
Contoh 8: Pengaturan Popup Lebih Lanjut
Bab ini akan singkat dan melibatkan hanya beberapa baris kode. Mari
kita lihat contoh pengaturan pertama, dimana kita akan dock popup
secara default.
31
Pengaturan berikutnya adalah terkait navigasi fitur seperti 1 of 2 yang
dibahas di bab sebelumnya. Untuk tidak menampilkan fitur ini, kita
hanya perlu mengubah satu baris kode.
32
Contoh 9: Menambahkan Tombol Pada Popup
Dengan demikian, pada saat popup tampil, kita akan siapkan satu
tombol, yang apabila di klik, dapat mengirim permintaan dan
menampilkan hasilnya. Apabila hasilnya berupa data tabular, kita
tampilkan dalam sebuah tabel.
33
Sebelum menangani klik, mari kita bahas beberapa hal yang mungkin
menarik.
34
c. className: barangkali, ini adalah yang paling
menarik, dimana kita menentukan icon dari tombol.
Properti ini merupakan nama class CSS. Dalam hal ini,
kita otomatis dapat menggunakan Esri Icon Font.
Untuk nama-nama class yang disediakan,
kunjungilah:
https://developers.arcgis.com/javascript/latest/esri
-icon-font/
Kini, kita akan menangani klik. Kita tahu bahwa harus menangani
event trigger-action. Tambahkan beberapa baris berikut di akhir kode
JavaScript kita:
view.popup.on('trigger-action', function(e) {
if (e.action.id == 'btnActionDetail') {
let a = view.popup.selectedFeature.attributes;
let i = a.id;
let n = a.name;
alert(i + n);
}
});
36
let a = view.popup.selectedFeature.attributes;
let i = a.id;
let n = a.name;
let h = `
<h1>${n}</h1>
<table>
<tr>
<th>Kolom 1</th>
<th>Kolom 2</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
`;
view.popup.content = h;
Kode HTML tersebut tentunya bisa dihasilkan dari data yang diterima
dari server. Sebagaimana disebut sebelumnya, kita tidak
mencontohkannya dalam buku ini. Walau demikian, pengembang
37
aplikasi web tentunya bisa menggunakan beberapa opsi seperti
jQuery atau Web API yang lebih baru.
38
Contoh 10: Menangani event click pada
MapView
Properti Tipe/Nilai
mapPoint Point
x Number
y Number
39
button Number
buttons 0|1|2
type "click"
stopPropagation Function
timestamp Number
native Object
(dokumentasi: https://developers.arcgis.com/javascript/latest/api-
reference/esri-views-MapView.html#event-click)
Kemudian, salah satu method yang tersedia adalah hitTest, yang akan
mengembalikan Promise dari hit test result. Method ini
membutuhkan argumen berupa ScreenPoint dimana x dan y yang
dibutuhkan bisa didapatkan dari penanganan event.
40
Ini berarti kita sudah mendekati hasilnya. Melalui developer tools,
kita dapat melihat bahwa elemen pertama dalam array yang
dikembalikan memiliki atribut graphic, yang selanjutnya memiliki
attributes, yang selanjutnya memiliki atribut berupa kolom data CSV.
41
Dan, berikut adalah contoh layarnya:
Dalam bab ini, kita menggunakan alert. Namun, tentu saja, kita bisa
menampilkannya dengan cara lain.
42
Contoh 11: Bekerja dengan
UniqueValueRenderer
43
uniqueValueInfos: [
{
value: 'Jawa Barat',
symbol: {
type: 'text',
text: 'B',
font: {size: 20},
}
},
{
value: 'Jawa Tengah',
symbol: {
type: 'text',
text: 'T',
font: {size: 20},
}
}
],
44
Contoh 12: Menambahkan Legend
Ini adalah bab terakhir, dimana kita akan melengkapi map kita
dengan sebuah legend. Termasuk penggunaan
UniqueValueRenderer dan visual variable. Lebih hebatnya lagi, hanya
dengan beberapa baris kode.
Setelah itu, tambahkan dua baris berikut di akhir kode JavaScript kita:
let legend = new Legend({view: view});
view.ui.add(legend, 'bottom-left');
45
46
Daftar Pustaka
47