Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Sabtu, 01 Maret 2025

Perkenalan Koding GIS - OSM - TomTom Traffic API di D4 Transportasi Unesa

 



Dunia per-petaan dengan tumpukan gambar data diatasnya mulai saya kenal ketika berkecimpung di dunia telekomunikasi 20 tahun yang lalu, dimana setelah proses deployment jaringan BTS-CDMA selanjutnya akan dilakukan proses adjustment atau optimasi jaringan radionya. Tidak ada cara lain yaitu dengan melakukan drive test atau pengujian keliling menggunakan alat testing ( dulu standarnya TEMS buatan Ericsson ) dan dengan bantuan teknologi GPS untuk menentukan lokasi dan peta (yg masih sederhana) maka kondisi jaringan disuatu lokasi akan tergambarkan melalui GIS. 



Kemudahan pelaporan mulai muncul ketika Google saat itu mengeluarkan layanan (yg masih berbayar) yang namanya Google Earth yang bisa ditumpangkan data hasil drivetest berformat kml. Era 2010an  google bahkan menggratiskan google earth ketika mulai memanfaatkan data penggunaan smartphone android yang disana terdapat secara default perangkat GPS dan aplikasi Google Maps. Tentunya tidak ada makan siang gratis sebab google mendapatkan nilai yang lebih yaitu data traffic atau pergerakan smartphone android yang bisa dimanfaatkan untuk berbagai keperluan diantaranya untuk pemetaan dan transportasi.




Ketika 5 tahun yang lalu memulai kembali meng-koding GIS, saya sangat berharap bahwa google akan memberikan banyak kemudahan, namun untuk developer kelas teri, yanh dirasakan adalah google maps itu terlalu mahal untuk biaya penggunaan API nya, sehingga saat itu saya beralih ke OSM yang open source. Dan ujungnya ketika diminta membantu mengajar koding di prodi D4 Transportasi Fakultas Vokasi UNESA, saya teringat akan OSM dan bertemu dengan layanan API yang cukup berhubungan dengan GIS dan Transportasi yaitu TomTom. Dan ketika saya bertanya pada AI QWEN jawabannya seperti ini :

TomTom adalah perusahaan teknologi yang terkenal karena produk dan layanannya dalam bidang navigasi GPS (Global Positioning System). Perusahaan ini didirikan pada tahun 1991 di Amsterdam, Belanda, dan awalnya berfokus pada pengembangan perangkat lunak untuk perangkat mobile. Namun, TomTom kemudian menjadi sangat terkenal karena perangkat navigasi GPS portabel yang digunakan di mobil.


Berikut adalah beberapa aspek utama dari TomTom :


1. **Perangkat Navigasi GPS**

   - TomTom memproduksi perangkat GPS portabel yang dirancang untuk membantu pengguna menemukan rute terbaik saat berkendara. Perangkat ini sering disebut sebagai "Personal Navigation Devices" (PNDs).

   - Fitur utama termasuk peta digital yang diperbarui secara berkala, petunjuk suara, informasi lalu lintas waktu nyata, dan rute alternatif untuk menghindari kemacetan.

   - Beberapa model juga menyertakan fitur tambahan seperti deteksi zona kecepatan, titik-titik minat (POI), dan integrasi dengan smartphone.


2. **Aplikasi Navigasi**

   - Selain perangkat fisik, TomTom juga menawarkan aplikasi navigasi untuk smartphone (iOS dan Android). Aplikasi ini memberikan fungsi serupa dengan perangkat GPS portabel, tetapi lebih fleksibel karena dapat diunduh dan digunakan di perangkat seluler.

   - Aplikasi ini sering kali mencakup fitur seperti pembaruan peta gratis, informasi lalu lintas real-time, dan mode offline untuk penggunaan tanpa koneksi internet.


3. **Layanan Peta Digital**

   - TomTom memiliki divisi yang fokus pada pengembangan peta digital untuk berbagai kebutuhan, termasuk otomotif, logistik, dan transportasi.

   - Mereka menyediakan data peta yang digunakan oleh banyak perusahaan besar, termasuk pembuat mobil dan platform navigasi lainnya.

   - Teknologi mereka mendukung sistem navigasi bawaan di kendaraan modern, serta solusi untuk kendaraan otonom.


 4. **Teknologi Lalu Lintas**

   - TomTom dikenal karena sistem analisis lalu lintasnya yang canggih. Mereka mengumpulkan data lalu lintas dari berbagai sumber, termasuk perangkat GPS, aplikasi, dan sensor di jalan, untuk memberikan informasi lalu lintas yang akurat.

   - Salah satu produk terkenal mereka adalah **TomTom Traffic**, yang memberikan pembaruan lalu lintas waktu nyata kepada pengguna.


 5. **Solusi untuk Industri Otomotif**

   - TomTom bekerja sama dengan produsen mobil untuk menyediakan teknologi navigasi dan peta untuk sistem infotainment di kendaraan.

   - Mereka juga terlibat dalam pengembangan teknologi untuk kendaraan otonom, termasuk peta presisi tinggi (HD Maps) yang digunakan untuk navigasi kendaraan tanpa pengemudi.

6. **Inovasi Terkini**

   - TomTom terus berinovasi di bidang teknologi lokasi dan navigasi. Mereka telah mengembangkan solusi untuk berbagai industri, termasuk transportasi, logistik, dan manajemen armada.

   - Dengan meningkatnya popularitas kendaraan listrik (EV), TomTom juga menawarkan fitur seperti pencarian stasiun pengisian daya dan optimasi rute untuk EV.


Contoh dari data yang disediakan oleh tomtom adalah  kepadatan lalu lintas di kota besar di Indonesia pada tahun 2024.




Lalu apa yang saya bisa bagi ke mahasiswa saya? Saya langsung tunjukkan API geocode dari TomTom:


  • Misal saya ingin mencari dimana titik kampus unesa ketintang ?
  • Kita gunakan API yang bernama GEOCODE, silahkan daftar akun developer pada web tomtom untuk mendapatkan API key
  • https://api.tomtom.com/search/2/geocode/unesa%20ketintang.json?storeResult=false&limit=10&lat=-7.2399992&lon=112.7471288&key={api key akun tomtom kamu}

Hasil dari pemanggilan API diatas seperti ini :

{"summary":{"query":"unesa ketintang","queryType":"NON_NEAR","queryTime":96,"numResults":10,"offset":0,"totalResults":265,"fuzzyLevel":2,"geoBias":{"lat":-7.2399992,"lon":112.7471288}},"results":[{"type":"Street","id":"e9ieUCvNrsqyPy0Cvy2cfw","score":2.4756507874,"dist":7956.933017779969,"matchConfidence":{"score":0.6917175123197143},"address":{"streetName":"Jalan Ketintang","municipality":"Surabaya","municipalitySecondarySubdivision":"Ketintang","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60231, 60243","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Jalan Ketintang, Surabaya, Jawa Timur 60231, 60243","localName":"Surabaya"},"position":{"lat":-7.3105161,"lon":112.7348662},"viewport":{"topLeftPoint":{"lat":-7.31037,"lon":112.73413},"btmRightPoint":{"lat":-7.31056,"lon":112.7351}}},{"type":"Street","id":"lGUDfHDA8WAeHecAc_g1_w","score":2.4742546082,"dist":8010.299126124446,"matchConfidence":{"score":0.5804793046605109},"address":{"streetName":"Aspol Ketintang","municipality":"Surabaya","municipalitySecondarySubdivision":"Ketintang","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60231","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Aspol Ketintang, Surabaya, Jawa Timur 60231","localName":"Surabaya"},"position":{"lat":-7.3107785,"lon":112.733611},"viewport":{"topLeftPoint":{"lat":-7.3103,"lon":112.73348},"btmRightPoint":{"lat":-7.31102,"lon":112.7337}}},{"type":"Street","id":"uOEz23Z4P-Cf72bDEk-lbA","score":2.4518318176,"dist":7948.56952394092,"matchConfidence":{"score":0.6169948958054428},"address":{"streetName":"Jalan Ketintang Barat","municipality":"Surabaya","municipalitySecondarySubdivision":"Wonokromo","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60243","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Jalan Ketintang Barat, Surabaya, Jawa Timur 60243","localName":"Surabaya"},"position":{"lat":-7.3076704,"lon":112.7239106},"viewport":{"topLeftPoint":{"lat":-7.30761,"lon":112.72391},"btmRightPoint":{"lat":-7.30767,"lon":112.72398}}},{"type":"Street","id":"B-DbRqA35aw-JeVjK5Acwg","score":2.4455544949,"dist":8189.648375523681,"matchConfidence":{"score":0.5901404651607418},"address":{"streetName":"Jalan Ketintang Madya","municipality":"Surabaya","municipalitySecondarySubdivision":"Ketintang","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60231","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Jalan Ketintang Madya, Surabaya, Jawa Timur 60231","localName":"Surabaya"},"position":{"lat":-7.310193,"lon":112.724647},"viewport":{"topLeftPoint":{"lat":-7.30817,"lon":112.72324},"btmRightPoint":{"lat":-7.31153,"lon":112.72554}}},{"type":"Street","id":"aVmwrkyBItABNMIQoTOc0w","score":2.4421536922,"dist":8318.912515539143,"matchConfidence":{"score":0.5712848480571701},"address":{"streetName":"Jalan Ketintang Wiyata","municipality":"Surabaya","municipalitySecondarySubdivision":"Ketintang","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60231","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Jalan Ketintang Wiyata, Surabaya, Jawa Timur 60231","localName":"Surabaya"},"position":{"lat":-7.311699,"lon":112.725596},"viewport":{"topLeftPoint":{"lat":-7.3102,"lon":112.72495},"btmRightPoint":{"lat":-7.31336,"lon":112.72613}}},{"type":"Street","id":"CWCKM1BVplC27ldYNAyJxA","score":2.4357554913,"dist":8559.821839376486,"matchConfidence":{"score":0.6098092383871191},"address":{"streetName":"Jalan Ketintang Jaya","municipality":"Surabaya","municipalitySecondarySubdivision":"Ketintang","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60231","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Jalan Ketintang Jaya, Surabaya, Jawa Timur 60231","localName":"Surabaya"},"position":{"lat":-7.3133399,"lon":112.7235488},"viewport":{"topLeftPoint":{"lat":-7.31068,"lon":112.72246},"btmRightPoint":{"lat":-7.31659,"lon":112.72444}}},{"type":"Street","id":"Lv3BPlc61skQc7-UQwVk5A","score":2.4306242466,"dist":7855.83359643566,"matchConfidence":{"score":0.6032409644893819},"address":{"streetName":"Jalan Ketintang Gang 4","municipality":"Surabaya","municipalitySecondarySubdivision":"Wonokromo","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60243","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Jalan Ketintang Gang 4, Surabaya, Jawa Timur 60243","localName":"Surabaya"},"position":{"lat":-7.307752,"lon":112.726945},"viewport":{"topLeftPoint":{"lat":-7.30741,"lon":112.72647},"btmRightPoint":{"lat":-7.3083,"lon":112.72777}}},{"type":"Street","id":"p8tU84Huguu4zN7R3TGYLw","score":2.428283453,"dist":7947.518343296118,"matchConfidence":{"score":0.5744897129760105},"address":{"streetName":"Jalan Ketintang Gang Nirwana","municipality":"Surabaya","municipalitySecondarySubdivision":"Wonokromo","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60243","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Jalan Ketintang Gang Nirwana, Surabaya, Jawa Timur 60243","localName":"Surabaya"},"position":{"lat":-7.3092358,"lon":112.7292429},"viewport":{"topLeftPoint":{"lat":-7.30858,"lon":112.72908},"btmRightPoint":{"lat":-7.30979,"lon":112.72943}}},{"type":"Street","id":"Q-2prKZatjMRnAfgDNg4aA","score":2.426160574,"dist":8030.224816078184,"matchConfidence":{"score":0.5840208710051024},"address":{"streetName":"Jalan Ketintang Tengah 2","municipality":"Surabaya","municipalitySecondarySubdivision":"Ketintang","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60231","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Jalan Ketintang Tengah 2, Surabaya, Jawa Timur 60231","localName":"Surabaya"},"position":{"lat":-7.309328,"lon":112.726744},"viewport":{"topLeftPoint":{"lat":-7.30875,"lon":112.72583},"btmRightPoint":{"lat":-7.3102,"lon":112.72708}}},{"type":"Street","id":"l1lj1V--wtuBD_t619Ar_A","score":2.4258370399,"dist":8042.793984337351,"matchConfidence":{"score":0.5503830420110429},"address":{"streetName":"Jalan Ketintang Timur PTT","municipality":"Surabaya","municipalitySecondarySubdivision":"Ketintang","countrySubdivision":"Jawa Timur","countrySubdivisionName":"Jawa Timur","countrySubdivisionCode":"JI","postalCode":"60231","countryCode":"ID","country":"Indonesia","countryCodeISO3":"IDN","freeformAddress":"Jalan Ketintang Timur PTT, Surabaya, Jawa Timur 60231","localName":"Surabaya"},"position":{"lat":-7.310581,"lon":112.731192},"viewport":{"topLeftPoint":{"lat":-7.30977,"lon":112.73095},"btmRightPoint":{"lat":-7.31138,"lon":112.73144}}}]}
Data hasil reply diatas sangatlah kurang menarik, jadi data teks berformat Json tersebut dapat kita tumpangkan ke peta OSM sehingga bisa menampilkan peta pencarian lokasi seperti contoh berikut:



  • Data dari reply API berformat JSON
  • HTML dapat melakukan parsing JSON menjadi format yang lebih visual
  • Menggunakan javascript siap pakai “leaflet.js” dari OSM dan kemudian di tumpangkan data hasil reply API TomTom Geocode
  • Koding HTML bisa di unduh : https://pastebin.com/jeyJeqev

Tidak hanya geocoding saja, banyak sekali API yang gratis maupun berbayar (trial 30 hari) dan yang saya ingin tunjukkan adalah API Route dan Traffic dimana tomtom dapat memberikan rute terpendek dari 2 buah titik dan kemudian bisa juga ditambahkan informasi trafik lalulintas dirute tersebut, seperti pada contoh ini.

Koding html bisa diunduh disini : https://pastebin.com/005TnmgQ


Dari hasil rute diatas dapat juga di inspeksi pada console dan pada plot pointsnya dapat digunakan sebagai inputan titik-titik GPS pada pembahasan sebelumnya (baca disini), dengan cara yang sangat simple copy-paste lalu save di notepad. 

Apa lagi yang bisa tomtom lakukan ? Banyak deh..coba main main ke websitenya dan akan ketemu kecanggihan dunia transportasi yang digabungkan dengan teknologi mutahir.





Selamat Belajar !
Share:

Perkenalan Koding GIS - Open Street Map di D4 Transportasi Unesa

 


Dunia transportasi memiliki hubungan yang sangat erat dengan per-Peta-an yang dalam istilah kerennya disebut ilmu Geographic Information System. Penilaian dari sebuah lalu lintas apakah padat, lengang, macet, bahkan laporan bulananya akan menjadi lebih mudah dimengerti melalui laporan visual. Seperti orang bijak bilang "A picture is worth a thousand words" apalagi kalau "words" atau kata-kata yang ingin disampaikan berupa data-data numerik. Alasan inilah yang melatarbelakangi saya berbagi ilmu bagaimana menyusun sebuah laporan traffic dalam sebuah peta yang interactive.

Masih teringat jelas 5 tahun lalu saya sempat bermain perangkat GPS yang saya bawa keliling perumahan untuk mencoba mengambil data suhu dan kelembaban (baca disini), dan dimasa pandemi itu saya mendapatkan dasar-dasar penggabungan data numerik ke dalam sebuah peta yang saat itu saya gunakan adalah google maps. Begitu juga perkenalan saya dengan python dan geopy yang merupakan package berbasis OSM ( open street map). Jadi  topik pertama di awal sesi berbagi ilmu koding GIS di D4 transportasi fakultas vokasi unesa, saya perkenalan OSM dan bagaimana membuat simulasi perjalanan berbasis GPS-MQTT yang kemudian ditampilkan langsung di web browser.




OSM ini merupakan platform per-petaan yang berbasis open source, sehingga dapat digunakan secara bebas (tentunya dengan volume penggunaan yang wajar) untuk berbagai aplikasi perpetaan. Simulasi yang saya rancang akan membaca urutan titik-titik koordinat yang saya susun dan kemudian secara satu-persatu dikirimkan melalui protokol MQTT ( kalau belum paham  dasar mqtt bisa baca disini). Broker yang saya gunakan adalah hivemq.com yang kini sudah tidak full gratis lagi jika tidak mendaftar akun. Jadi jika kalian ingin mencobanya maka butuh mendaftar akun dan mendapatkan alamat broker private cloud yang lebih cepat dari sekedar broker.hivemq.com.

Koding simulator python Mqtt seperti ini :


#jalankan ini untuk mensimulasikan pergerakan sebuah kendaraan
import json
import time
import paho.mqtt.client as mqtt
import ssl


# MQTT Broker Configuration sesuaikan dengan account hivemq kalian
MQTT_BROKER = "xxxxxxxxxxxxxxxxxxxxxxxxx.s1.eu.hivemq.cloud"
MQTT_PORT = 8884  # WebSocket Secure (WSS) port
MQTT_TOPIC = "car/gps" #topiknya sama
MQTT_USERNAME = "user_name"  # Ganti dengan HiveMQ Cloud username
MQTT_PASSWORD = "password"  # Gant dengan HiveMQ Cloud password

# Create MQTT client with WebSocket transport
client = mqtt.Client(transport="websockets")
client.tls_set_context(ssl.create_default_context()) #websocket TLS 8884
client.username_pw_set(MQTT_USERNAME, MQTT_PASSWORD)  # Set credentials

# Connect to the broker
client.connect(MQTT_BROKER, MQTT_PORT)
print("Connected to MQTT broker")

# Load GPS data from the file GANTI FILENYA yang sesuai
with open("gps_1.txt", "r") as file:
    gps_data = json.load(file)

# Simulate car movement and publish GPS data
for point in gps_data:
    latitude = point["latitude"]
    longitude = point["longitude"]
    payload = {
        "latitude": latitude,
        "longitude": longitude
    }
    print(f"Publishing: {payload}")
    client.publish(MQTT_TOPIC, json.dumps(payload))
    time.sleep(0.1)  # Simulate 1-second delay

# Disconnect after publishing all points
client.disconnect()
print("Disconnected from MQTT broker")


Untuk bisa menampilkan pada web browser maka dibutuhkan MQTT dengan websocket dan hivemq menggunakan port 8884 untuk pub dan sub data. Sedangkan file urutan titik-titik perjalanan digunakan sebuah file yang pada contoh diatas bernama gps_1.txt. Sedangkan isi dari file ini adalah json sebagai berikut :

[
    {
        "latitude": -7.23177,
        "longitude": 112.72837
    },
    {
        "latitude": -7.23173,
        "longitude": 112.72839
    },
    {
        "latitude": -7.23141,
        "longitude": 112.72854
    },
    {
        "latitude": -7.23106,
        "longitude": 112.72874
    },
    {
        "latitude": -7.23064,
        "longitude": 112.72896
    },
    {
        "latitude": -7.22985,
        "longitude": 112.72941
    },
    {
        "latitude": -7.22955,
        "longitude": 112.72953
    },
    {
        "latitude": -7.22906,
        "longitude": 112.72977
    },
    {
        "latitude": -7.229,
        "longitude": 112.7298
    },
    {
        "latitude": -7.2271,
        "longitude": 112.73066
    },
    {
        "latitude": -7.22666,
        "longitude": 112.73086
    },
    {
        "latitude": -7.22613,
        "longitude": 112.73111
    },
    {
        "latitude": -7.22598,
        "longitude": 112.73118
    },
    {
        "latitude": -7.2251,
        "longitude": 112.7316
    },
    {
        "latitude": -7.22491,
        "longitude": 112.73165
    },
    {
        "latitude": -7.22449,
        "longitude": 112.73179
    },
    {
        "latitude": -7.2244,
        "longitude": 112.73182
    },
    {
        "latitude": -7.22413,
        "longitude": 112.73189
    },
    {
        "latitude": -7.22356,
        "longitude": 112.73199
    },
    {
        "latitude": -7.223,
        "longitude": 112.73208
    },
    {
        "latitude": -7.22284,
        "longitude": 112.73205
    },
    {
        "latitude": -7.22266,
        "longitude": 112.73193
    },
    {
        "latitude": -7.2226,
        "longitude": 112.73187
    },
    {
        "latitude": -7.22241,
        "longitude": 112.73167
    },
    {
        "latitude": -7.22213,
        "longitude": 112.73142
    },
    {
        "latitude": -7.2214,
        "longitude": 112.73103
    },
    {
        "latitude": -7.22101,
        "longitude": 112.73084
    },
    {
        "latitude": -7.22074,
        "longitude": 112.7307
    },
    {
        "latitude": -7.22038,
        "longitude": 112.73051
    },
    {
        "latitude": -7.22029,
        "longitude": 112.73046
    },
    {
        "latitude": -7.22023,
        "longitude": 112.7304
    },
    {
        "latitude": -7.22009,
        "longitude": 112.73021
    },
    {
        "latitude": -7.22008,
        "longitude": 112.73019
    },
    {
        "latitude": -7.21994,
        "longitude": 112.72989
    },
    {
        "latitude": -7.21989,
        "longitude": 112.72975
    },
    {
        "latitude": -7.21982,
        "longitude": 112.72943
    },
    {
        "latitude": -7.21984,
        "longitude": 112.72922
    },
    {
        "latitude": -7.21996,
        "longitude": 112.72871
    },
    {
        "latitude": -7.22024,
        "longitude": 112.728
    },
    {
        "latitude": -7.22034,
        "longitude": 112.72766
    },
    {
        "latitude": -7.22043,
        "longitude": 112.72727
    },
    {
        "latitude": -7.22047,
        "longitude": 112.72693
    },
    {
        "latitude": -7.22049,
        "longitude": 112.72673
    },
    {
        "latitude": -7.22054,
        "longitude": 112.72555
    },
    {
        "latitude": -7.22061,
        "longitude": 112.7248
    },
    {
        "latitude": -7.22069,
        "longitude": 112.72444
    },
    {
        "latitude": -7.22088,
        "longitude": 112.72395
    },
    {
        "latitude": -7.22107,
        "longitude": 112.7236
    },
    {
        "latitude": -7.22126,
        "longitude": 112.72335
    },
    {
        "latitude": -7.22153,
        "longitude": 112.72308
    },
    {
        "latitude": -7.22185,
        "longitude": 112.72285
    },
    {
        "latitude": -7.22226,
        "longitude": 112.72264
    },
    {
        "latitude": -7.22265,
        "longitude": 112.7225
    },
    {
        "latitude": -7.22282,
        "longitude": 112.72246
    },
    {
        "latitude": -7.22292,
        "longitude": 112.72246
    },
    {
        "latitude": -7.22314,
        "longitude": 112.72252
    },
    {
        "latitude": -7.22331,
        "longitude": 112.72259
    },
    {
        "latitude": -7.22337,
        "longitude": 112.72264
    },
    {
        "latitude": -7.22348,
        "longitude": 112.72269
    },
    {
        "latitude": -7.2236,
        "longitude": 112.72271
    },
    {
        "latitude": -7.22368,
        "longitude": 112.72271
    },
    {
        "latitude": -7.22376,
        "longitude": 112.72271
    },
    {
        "latitude": -7.22393,
        "longitude": 112.72269
    },
    {
        "latitude": -7.22404,
        "longitude": 112.72266
    },
    {
        "latitude": -7.22415,
        "longitude": 112.72261
    },
    {
        "latitude": -7.22423,
        "longitude": 112.72254
    },
    {
        "latitude": -7.22425,
        "longitude": 112.72252
    },
    {
        "latitude": -7.2244,
        "longitude": 112.72235
    },
    {
        "latitude": -7.22453,
        "longitude": 112.72223
    },
    {
        "latitude": -7.22471,
        "longitude": 112.72211
    },
    {
        "latitude": -7.22486,
        "longitude": 112.72205
    },
    {
        "latitude": -7.22533,
        "longitude": 112.72196
    },
    {
        "latitude": -7.2261,
        "longitude": 112.72181
    },
    {
        "latitude": -7.22696,
        "longitude": 112.72164
    },
    {
        "latitude": -7.2273,
        "longitude": 112.72155
    },
    {
        "latitude": -7.22813,
        "longitude": 112.72135
    },
    {
        "latitude": -7.22875,
        "longitude": 112.72118
    },
    {
        "latitude": -7.22881,
        "longitude": 112.72117
    },
    {
        "latitude": -7.22884,
        "longitude": 112.72116
    },
    {
        "latitude": -7.229,
        "longitude": 112.7211
    },
    {
        "latitude": -7.22949,
        "longitude": 112.72093
    },
    {
        "latitude": -7.23014,
        "longitude": 112.72065
    },
    {
        "latitude": -7.2307,
        "longitude": 112.72038
    },
    {
        "latitude": -7.2315,
        "longitude": 112.71988
    },
    {
        "latitude": -7.23173,
        "longitude": 112.71973
    },
    {
        "latitude": -7.23199,
        "longitude": 112.71955
    },
    {
        "latitude": -7.23204,
        "longitude": 112.71951
    },
    {
        "latitude": -7.23219,
        "longitude": 112.7194
    },
    {
        "latitude": -7.23233,
        "longitude": 112.71929
    },
    {
        "latitude": -7.23601,
        "longitude": 112.71656
    },
    {
        "latitude": -7.23617,
        "longitude": 112.71644
    },
    {
        "latitude": -7.23633,
        "longitude": 112.71633
    },
    {
        "latitude": -7.23707,
        "longitude": 112.71577
    },
    {
        "latitude": -7.23774,
        "longitude": 112.71526
    },
    {
        "latitude": -7.23778,
        "longitude": 112.71523
    },
    {
        "latitude": -7.23842,
        "longitude": 112.71474
    },
    {
        "latitude": -7.23862,
        "longitude": 112.71459
    },
    {
        "latitude": -7.2389,
        "longitude": 112.71438
    },
    {
        "latitude": -7.23916,
        "longitude": 112.71418
    },
    {
        "latitude": -7.23978,
        "longitude": 112.71371
    },
    {
        "latitude": -7.24009,
        "longitude": 112.71348
    },
    {
        "latitude": -7.24021,
        "longitude": 112.7134
    },
    {
        "latitude": -7.24034,
        "longitude": 112.71331
    },
    {
        "latitude": -7.24053,
        "longitude": 112.71319
    },
    {
        "latitude": -7.24072,
        "longitude": 112.71306
    },
    {
        "latitude": -7.24098,
        "longitude": 112.71288
    },
    {
        "latitude": -7.24112,
        "longitude": 112.71278
    },
    {
        "latitude": -7.24116,
        "longitude": 112.71276
    },
    {
        "latitude": -7.24138,
        "longitude": 112.71258
    },
    {
        "latitude": -7.24154,
        "longitude": 112.71245
    },
    {
        "latitude": -7.24191,
        "longitude": 112.71214
    },
    {
        "latitude": -7.24209,
        "longitude": 112.71199
    },
    {
        "latitude": -7.24226,
        "longitude": 112.71186
    },
    {
        "latitude": -7.24289,
        "longitude": 112.71137
    },
    {
        "latitude": -7.24334,
        "longitude": 112.71104
    },
    {
        "latitude": -7.24361,
        "longitude": 112.71085
    },
    {
        "latitude": -7.24367,
        "longitude": 112.71081
    },
    {
        "latitude": -7.24372,
        "longitude": 112.71078
    },
    {
        "latitude": -7.24425,
        "longitude": 112.71042
    },
    {
        "latitude": -7.24469,
        "longitude": 112.71016
    },
    {
        "latitude": -7.24519,
        "longitude": 112.70993
    },
    {
        "latitude": -7.24532,
        "longitude": 112.70986
    },
    {
        "latitude": -7.24556,
        "longitude": 112.70977
    },
    {
        "latitude": -7.2459,
        "longitude": 112.70961
    },
    {
        "latitude": -7.24601,
        "longitude": 112.70958
    },
    {
        "latitude": -7.24615,
        "longitude": 112.70958
    },
    {
        "latitude": -7.24643,
        "longitude": 112.70948
    },
    {
        "latitude": -7.24684,
        "longitude": 112.7094
    },
    {
        "latitude": -7.24706,
        "longitude": 112.70937
    },
    {
        "latitude": -7.24733,
        "longitude": 112.70932
    },
    {
        "latitude": -7.24802,
        "longitude": 112.70928
    },
    {
        "latitude": -7.24847,
        "longitude": 112.70927
    },
    {
        "latitude": -7.24906,
        "longitude": 112.70926
    },
    {
        "latitude": -7.24991,
        "longitude": 112.70926
    },
    {
        "latitude": -7.25059,
        "longitude": 112.70928
    },
    {
        "latitude": -7.25067,
        "longitude": 112.70927
    },
    {
        "latitude": -7.25072,
        "longitude": 112.70927
    },
    {
        "latitude": -7.25092,
        "longitude": 112.70928
    },
    {
        "latitude": -7.25098,
        "longitude": 112.70928
    },
    {
        "latitude": -7.25199,
        "longitude": 112.70928
    },
    {
        "latitude": -7.2523,
        "longitude": 112.70929
    },
    {
        "latitude": -7.253,
        "longitude": 112.70931
    },
    {
        "latitude": -7.25341,
        "longitude": 112.70931
    },
    {
        "latitude": -7.25348,
        "longitude": 112.70931
    },
    {
        "latitude": -7.2541,
        "longitude": 112.70933
    },
    {
        "latitude": -7.25524,
        "longitude": 112.70934
    },
    {
        "latitude": -7.25577,
        "longitude": 112.70936
    },
    {
        "latitude": -7.25597,
        "longitude": 112.70937
    },
    {
        "latitude": -7.2565,
        "longitude": 112.70938
    },
    {
        "latitude": -7.25732,
        "longitude": 112.70941
    },
    {
        "latitude": -7.25799,
        "longitude": 112.70939
    },
    {
        "latitude": -7.25864,
        "longitude": 112.70939
    },
    {
        "latitude": -7.25901,
        "longitude": 112.70941
    },
    {
        "latitude": -7.25961,
        "longitude": 112.70943
    },
    {
        "latitude": -7.2599,
        "longitude": 112.70944
    },
    {
        "latitude": -7.25998,
        "longitude": 112.70945
    },
    {
        "latitude": -7.26115,
        "longitude": 112.70946
    },
    {
        "latitude": -7.2617,
        "longitude": 112.70945
    },
    {
        "latitude": -7.26272,
        "longitude": 112.70943
    },
    {
        "latitude": -7.26526,
        "longitude": 112.70929
    },
    {
        "latitude": -7.26607,
        "longitude": 112.70924
    },
    {
        "latitude": -7.26738,
        "longitude": 112.70915
    },
    {
        "latitude": -7.26747,
        "longitude": 112.70913
    },
    {
        "latitude": -7.26763,
        "longitude": 112.70912
    },
    {
        "latitude": -7.26779,
        "longitude": 112.70911
    },
    {
        "latitude": -7.26907,
        "longitude": 112.70903
    },
    {
        "latitude": -7.26947,
        "longitude": 112.709
    },
    {
        "latitude": -7.26963,
        "longitude": 112.70899
    },
    {
        "latitude": -7.27295,
        "longitude": 112.70878
    },
    {
        "latitude": -7.27298,
        "longitude": 112.70877
    },
    {
        "latitude": -7.27468,
        "longitude": 112.70865
    },
    {
        "latitude": -7.27573,
        "longitude": 112.70858
    },
    {
        "latitude": -7.27726,
        "longitude": 112.70848
    },
    {
        "latitude": -7.27979,
        "longitude": 112.7083
    },
    {
        "latitude": -7.27996,
        "longitude": 112.70828
    },
    {
        "latitude": -7.28079,
        "longitude": 112.70813
    },
    {
        "latitude": -7.28131,
        "longitude": 112.70802
    },
    {
        "latitude": -7.28207,
        "longitude": 112.70783
    },
    {
        "latitude": -7.28241,
        "longitude": 112.70772
    },
    {
        "latitude": -7.28311,
        "longitude": 112.70742
    },
    {
        "latitude": -7.28348,
        "longitude": 112.70725
    },
    {
        "latitude": -7.28361,
        "longitude": 112.70718
    },
    {
        "latitude": -7.28404,
        "longitude": 112.70693
    },
    {
        "latitude": -7.28449,
        "longitude": 112.70661
    },
    {
        "latitude": -7.28498,
        "longitude": 112.70619
    },
    {
        "latitude": -7.28524,
        "longitude": 112.70595
    },
    {
        "latitude": -7.28556,
        "longitude": 112.70563
    },
    {
        "latitude": -7.28601,
        "longitude": 112.70509
    },
    {
        "latitude": -7.28604,
        "longitude": 112.70506
    },
    {
        "latitude": -7.28607,
        "longitude": 112.70502
    },
    {
        "latitude": -7.28653,
        "longitude": 112.70437
    },
    {
        "latitude": -7.2871,
        "longitude": 112.70352
    },
    {
        "latitude": -7.28719,
        "longitude": 112.70338
    },
    {
        "latitude": -7.28824,
        "longitude": 112.70181
    },
    {
        "latitude": -7.28888,
        "longitude": 112.70088
    },
    {
        "latitude": -7.2891,
        "longitude": 112.70058
    },
    {
        "latitude": -7.28943,
        "longitude": 112.70012
    },
    {
        "latitude": -7.2899,
        "longitude": 112.69963
    },
    {
        "latitude": -7.29003,
        "longitude": 112.69951
    },
    {
        "latitude": -7.29006,
        "longitude": 112.69948
    },
    {
        "latitude": -7.29012,
        "longitude": 112.69943
    },
    {
        "latitude": -7.29032,
        "longitude": 112.69927
    },
    {
        "latitude": -7.29098,
        "longitude": 112.6988
    },
    {
        "latitude": -7.29126,
        "longitude": 112.69864
    },
    {
        "latitude": -7.29137,
        "longitude": 112.69859
    },
    {
        "latitude": -7.29171,
        "longitude": 112.69846
    },
    {
        "latitude": -7.2922,
        "longitude": 112.69828
    },
    {
        "latitude": -7.2923,
        "longitude": 112.69824
    },
    {
        "latitude": -7.29272,
        "longitude": 112.69815
    },
    {
        "latitude": -7.29317,
        "longitude": 112.69808
    },
    {
        "latitude": -7.29409,
        "longitude": 112.69801
    },
    {
        "latitude": -7.29492,
        "longitude": 112.69801
    },
    {
        "latitude": -7.29517,
        "longitude": 112.69801
    },
    {
        "latitude": -7.29849,
        "longitude": 112.6983
    },
    {
        "latitude": -7.30103,
        "longitude": 112.69851
    },
    {
        "latitude": -7.30178,
        "longitude": 112.69859
    },
    {
        "latitude": -7.30245,
        "longitude": 112.69867
    },
    {
        "latitude": -7.30286,
        "longitude": 112.69873
    },
    {
        "latitude": -7.30336,
        "longitude": 112.69883
    },
    {
        "latitude": -7.30387,
        "longitude": 112.69899
    },
    {
        "latitude": -7.30433,
        "longitude": 112.69918
    },
    {
        "latitude": -7.30477,
        "longitude": 112.69942
    },
    {
        "latitude": -7.30501,
        "longitude": 112.69957
    },
    {
        "latitude": -7.30534,
        "longitude": 112.69982
    },
    {
        "latitude": -7.30568,
        "longitude": 112.70012
    },
    {
        "latitude": -7.30599,
        "longitude": 112.70045
    },
    {
        "latitude": -7.30628,
        "longitude": 112.70083
    },
    {
        "latitude": -7.30652,
        "longitude": 112.70125
    },
    {
        "latitude": -7.30674,
        "longitude": 112.70169
    },
    {
        "latitude": -7.30704,
        "longitude": 112.7025
    },
    {
        "latitude": -7.30712,
        "longitude": 112.70271
    },
    {
        "latitude": -7.30753,
        "longitude": 112.70414
    },
    {
        "latitude": -7.3079,
        "longitude": 112.7056
    },
    {
        "latitude": -7.30803,
        "longitude": 112.70609
    },
    {
        "latitude": -7.30818,
        "longitude": 112.70663
    },
    {
        "latitude": -7.30838,
        "longitude": 112.70741
    },
    {
        "latitude": -7.30848,
        "longitude": 112.70776
    },
    {
        "latitude": -7.30864,
        "longitude": 112.70835
    },
    {
        "latitude": -7.30868,
        "longitude": 112.70853
    },
    {
        "latitude": -7.30873,
        "longitude": 112.7087
    },
    {
        "latitude": -7.30883,
        "longitude": 112.70909
    },
    {
        "latitude": -7.30896,
        "longitude": 112.7095
    },
    {
        "latitude": -7.30915,
        "longitude": 112.7101
    },
    {
        "latitude": -7.30937,
        "longitude": 112.71065
    },
    {
        "latitude": -7.30947,
        "longitude": 112.71087
    },
    {
        "latitude": -7.30952,
        "longitude": 112.71097
    },
    {
        "latitude": -7.30963,
        "longitude": 112.71118
    },
    {
        "latitude": -7.30966,
        "longitude": 112.71126
    },
    {
        "latitude": -7.30969,
        "longitude": 112.71131
    },
    {
        "latitude": -7.30975,
        "longitude": 112.71142
    },
    {
        "latitude": -7.30994,
        "longitude": 112.71176
    },
    {
        "latitude": -7.31003,
        "longitude": 112.71193
    },
    {
        "latitude": -7.31011,
        "longitude": 112.71206
    },
    {
        "latitude": -7.31034,
        "longitude": 112.71241
    },
    {
        "latitude": -7.31054,
        "longitude": 112.71266
    },
    {
        "latitude": -7.31058,
        "longitude": 112.71272
    },
    {
        "latitude": -7.31061,
        "longitude": 112.71275
    },
    {
        "latitude": -7.31084,
        "longitude": 112.71305
    },
    {
        "latitude": -7.31135,
        "longitude": 112.71358
    },
    {
        "latitude": -7.31172,
        "longitude": 112.71392
    },
    {
        "latitude": -7.31211,
        "longitude": 112.71424
    },
    {
        "latitude": -7.31221,
        "longitude": 112.71432
    },
    {
        "latitude": -7.31264,
        "longitude": 112.71471
    },
    {
        "latitude": -7.31317,
        "longitude": 112.71516
    },
    {
        "latitude": -7.31399,
        "longitude": 112.71582
    },
    {
        "latitude": -7.31421,
        "longitude": 112.71598
    },
    {
        "latitude": -7.31472,
        "longitude": 112.71631
    },
    {
        "latitude": -7.31513,
        "longitude": 112.71656
    },
    {
        "latitude": -7.31541,
        "longitude": 112.71671
    },
    {
        "latitude": -7.31603,
        "longitude": 112.71695
    },
    {
        "latitude": -7.31626,
        "longitude": 112.71702
    },
    {
        "latitude": -7.3164,
        "longitude": 112.71706
    },
    {
        "latitude": -7.31643,
        "longitude": 112.71707
    },
    {
        "latitude": -7.31689,
        "longitude": 112.71719
    },
    {
        "latitude": -7.31695,
        "longitude": 112.7172
    },
    {
        "latitude": -7.31704,
        "longitude": 112.71721
    },
    {
        "latitude": -7.31735,
        "longitude": 112.71723
    },
    {
        "latitude": -7.31773,
        "longitude": 112.71723
    },
    {
        "latitude": -7.31791,
        "longitude": 112.71721
    },
    {
        "latitude": -7.31847,
        "longitude": 112.71718
    },
    {
        "latitude": -7.31895,
        "longitude": 112.71711
    },
    {
        "latitude": -7.3206,
        "longitude": 112.7168
    },
    {
        "latitude": -7.32241,
        "longitude": 112.71635
    },
    {
        "latitude": -7.32288,
        "longitude": 112.71625
    },
    {
        "latitude": -7.32396,
        "longitude": 112.716
    },
    {
        "latitude": -7.32401,
        "longitude": 112.71599
    },
    {
        "latitude": -7.32455,
        "longitude": 112.71587
    },
    {
        "latitude": -7.32737,
        "longitude": 112.71526
    },
    {
        "latitude": -7.32763,
        "longitude": 112.71521
    },
    {
        "latitude": -7.3282,
        "longitude": 112.7151
    },
    {
        "latitude": -7.32828,
        "longitude": 112.71509
    },
    {
        "latitude": -7.32842,
        "longitude": 112.71506
    },
    {
        "latitude": -7.32879,
        "longitude": 112.715
    },
    {
        "latitude": -7.32922,
        "longitude": 112.71493
    },
    {
        "latitude": -7.33055,
        "longitude": 112.71472
    },
    {
        "latitude": -7.33163,
        "longitude": 112.71455
    },
    {
        "latitude": -7.33167,
        "longitude": 112.71454
    },
    {
        "latitude": -7.33275,
        "longitude": 112.71437
    },
    {
        "latitude": -7.33318,
        "longitude": 112.71432
    },
    {
        "latitude": -7.33367,
        "longitude": 112.71425
    },
    {
        "latitude": -7.33388,
        "longitude": 112.71422
    },
    {
        "latitude": -7.33533,
        "longitude": 112.71399
    },
    {
        "latitude": -7.33631,
        "longitude": 112.71381
    },
    {
        "latitude": -7.33792,
        "longitude": 112.71343
    },
    {
        "latitude": -7.33887,
        "longitude": 112.71318
    },
    {
        "latitude": -7.33899,
        "longitude": 112.71314
    },
    {
        "latitude": -7.3393,
        "longitude": 112.71316
    },
    {
        "latitude": -7.33991,
        "longitude": 112.71305
    },
    {
        "latitude": -7.34065,
        "longitude": 112.71287
    },
    {
        "latitude": -7.34087,
        "longitude": 112.7128
    },
    {
        "latitude": -7.3411,
        "longitude": 112.71273
    },
    {
        "latitude": -7.3413,
        "longitude": 112.71267
    },
    {
        "latitude": -7.34171,
        "longitude": 112.71252
    },
    {
        "latitude": -7.34196,
        "longitude": 112.71245
    },
    {
        "latitude": -7.34205,
        "longitude": 112.71244
    },
    {
        "latitude": -7.34221,
        "longitude": 112.71242
    },
    {
        "latitude": -7.34236,
        "longitude": 112.71243
    },
    {
        "latitude": -7.34248,
        "longitude": 112.71246
    },
    {
        "latitude": -7.34259,
        "longitude": 112.7125
    },
    {
        "latitude": -7.34268,
        "longitude": 112.71255
    },
    {
        "latitude": -7.34289,
        "longitude": 112.71268
    },
    {
        "latitude": -7.34324,
        "longitude": 112.71295
    },
    {
        "latitude": -7.34334,
        "longitude": 112.71301
    },
    {
        "latitude": -7.34356,
        "longitude": 112.71313
    },
    {
        "latitude": -7.34392,
        "longitude": 112.71327
    },
    {
        "latitude": -7.34414,
        "longitude": 112.71337
    },
    {
        "latitude": -7.3443,
        "longitude": 112.71349
    },
    {
        "latitude": -7.34441,
        "longitude": 112.7136
    },
    {
        "latitude": -7.34452,
        "longitude": 112.7138
    },
    {
        "latitude": -7.34474,
        "longitude": 112.7143
    },
    {
        "latitude": -7.34486,
        "longitude": 112.71456
    },
    {
        "latitude": -7.34489,
        "longitude": 112.7146
    },
    {
        "latitude": -7.34496,
        "longitude": 112.71463
    },
    {
        "latitude": -7.34521,
        "longitude": 112.7152
    },
    {
        "latitude": -7.34539,
        "longitude": 112.71556
    },
    {
        "latitude": -7.34572,
        "longitude": 112.71632
    },
    {
        "latitude": -7.34581,
        "longitude": 112.71655
    },
    {
        "latitude": -7.34591,
        "longitude": 112.71679
    },
    {
        "latitude": -7.34604,
        "longitude": 112.71716
    },
    {
        "latitude": -7.34623,
        "longitude": 112.71778
    },
    {
        "latitude": -7.34625,
        "longitude": 112.71788
    },
    {
        "latitude": -7.34629,
        "longitude": 112.71802
    },
    {
        "latitude": -7.34629,
        "longitude": 112.71807
    },
    {
        "latitude": -7.34632,
        "longitude": 112.71822
    },
    {
        "latitude": -7.34634,
        "longitude": 112.71833
    },
    {
        "latitude": -7.34637,
        "longitude": 112.7186
    },
    {
        "latitude": -7.34641,
        "longitude": 112.71895
    },
    {
        "latitude": -7.34643,
        "longitude": 112.71916
    },
    {
        "latitude": -7.34643,
        "longitude": 112.71958
    },
    {
        "latitude": -7.34641,
        "longitude": 112.71973
    },
    {
        "latitude": -7.34639,
        "longitude": 112.72004
    },
    {
        "latitude": -7.34635,
        "longitude": 112.72031
    },
    {
        "latitude": -7.34621,
        "longitude": 112.72101
    },
    {
        "latitude": -7.34616,
        "longitude": 112.7213
    },
    {
        "latitude": -7.34615,
        "longitude": 112.72159
    },
    {
        "latitude": -7.34617,
        "longitude": 112.72188
    },
    {
        "latitude": -7.34622,
        "longitude": 112.7222
    },
    {
        "latitude": -7.34644,
        "longitude": 112.72302
    },
    {
        "latitude": -7.34648,
        "longitude": 112.7232
    },
    {
        "latitude": -7.34662,
        "longitude": 112.72371
    },
    {
        "latitude": -7.34669,
        "longitude": 112.72418
    },
    {
        "latitude": -7.34673,
        "longitude": 112.72448
    },
    {
        "latitude": -7.34676,
        "longitude": 112.72468
    },
    {
        "latitude": -7.34677,
        "longitude": 112.72501
    },
    {
        "latitude": -7.34679,
        "longitude": 112.72531
    },
    {
        "latitude": -7.34676,
        "longitude": 112.72565
    },
    {
        "latitude": -7.34674,
        "longitude": 112.72614
    },
    {
        "latitude": -7.34677,
        "longitude": 112.72665
    },
    {
        "latitude": -7.34678,
        "longitude": 112.7273
    },
    {
        "latitude": -7.34678,
        "longitude": 112.7275
    },
    {
        "latitude": -7.34677,
        "longitude": 112.72867
    },
    {
        "latitude": -7.34678,
        "longitude": 112.72922
    },
    {
        "latitude": -7.34678,
        "longitude": 112.72928
    },
    {
        "latitude": -7.34677,
        "longitude": 112.7294
    },
    {
        "latitude": -7.34678,
        "longitude": 112.72959
    },
    {
        "latitude": -7.34678,
        "longitude": 112.73047
    },
    {
        "latitude": -7.34677,
        "longitude": 112.73066
    },
    {
        "latitude": -7.34674,
        "longitude": 112.73104
    },
    {
        "latitude": -7.34668,
        "longitude": 112.73137
    },
    {
        "latitude": -7.34662,
        "longitude": 112.73159
    },
    {
        "latitude": -7.34655,
        "longitude": 112.73178
    },
    {
        "latitude": -7.34646,
        "longitude": 112.73201
    },
    {
        "latitude": -7.34639,
        "longitude": 112.73213
    },
    {
        "latitude": -7.3462,
        "longitude": 112.73247
    },
    {
        "latitude": -7.34601,
        "longitude": 112.73277
    },
    {
        "latitude": -7.34526,
        "longitude": 112.73381
    },
    {
        "latitude": -7.34501,
        "longitude": 112.73417
    },
    {
        "latitude": -7.34483,
        "longitude": 112.73444
    },
    {
        "latitude": -7.34475,
        "longitude": 112.73457
    },
    {
        "latitude": -7.3447,
        "longitude": 112.73467
    },
    {
        "latitude": -7.34467,
        "longitude": 112.73476
    },
    {
        "latitude": -7.3446,
        "longitude": 112.73493
    },
    {
        "latitude": -7.34457,
        "longitude": 112.73507
    },
    {
        "latitude": -7.34455,
        "longitude": 112.73534
    },
    {
        "latitude": -7.34456,
        "longitude": 112.73569
    },
    {
        "latitude": -7.34459,
        "longitude": 112.73611
    },
    {
        "latitude": -7.3446,
        "longitude": 112.73618
    },
    {
        "latitude": -7.34461,
        "longitude": 112.73627
    },
    {
        "latitude": -7.34463,
        "longitude": 112.73642
    },
    {
        "latitude": -7.34467,
        "longitude": 112.73673
    },
    {
        "latitude": -7.34477,
        "longitude": 112.73739
    },
    {
        "latitude": -7.34479,
        "longitude": 112.73753
    },
    {
        "latitude": -7.34482,
        "longitude": 112.7377
    },
    {
        "latitude": -7.34484,
        "longitude": 112.7378
    },
    {
        "latitude": -7.34489,
        "longitude": 112.73824
    },
    {
        "latitude": -7.34489,
        "longitude": 112.73856
    },
    {
        "latitude": -7.34489,
        "longitude": 112.73876
    },
    {
        "latitude": -7.34488,
        "longitude": 112.73887
    },
    {
        "latitude": -7.34485,
        "longitude": 112.73911
    },
    {
        "latitude": -7.34479,
        "longitude": 112.73936
    },
    {
        "latitude": -7.3446,
        "longitude": 112.74005
    },
    {
        "latitude": -7.3445,
        "longitude": 112.74038
    },
    {
        "latitude": -7.34418,
        "longitude": 112.74152
    },
    {
        "latitude": -7.34413,
        "longitude": 112.7417
    },
    {
        "latitude": -7.34402,
        "longitude": 112.74207
    },
    {
        "latitude": -7.34397,
        "longitude": 112.74225
    },
    {
        "latitude": -7.34382,
        "longitude": 112.74276
    },
    {
        "latitude": -7.34367,
        "longitude": 112.74327
    },
    {
        "latitude": -7.34348,
        "longitude": 112.74387
    },
    {
        "latitude": -7.34337,
        "longitude": 112.74428
    },
    {
        "latitude": -7.34319,
        "longitude": 112.74494
    },
    {
        "latitude": -7.34305,
        "longitude": 112.74552
    },
    {
        "latitude": -7.34293,
        "longitude": 112.7461
    },
    {
        "latitude": -7.34289,
        "longitude": 112.74633
    },
    {
        "latitude": -7.34267,
        "longitude": 112.74784
    },
    {
        "latitude": -7.34261,
        "longitude": 112.74846
    },
    {
        "latitude": -7.34255,
        "longitude": 112.74916
    },
    {
        "latitude": -7.34254,
        "longitude": 112.7495
    },
    {
        "latitude": -7.34256,
        "longitude": 112.74994
    },
    {
        "latitude": -7.34261,
        "longitude": 112.75057
    },
    {
        "latitude": -7.34265,
        "longitude": 112.75097
    },
    {
        "latitude": -7.3427,
        "longitude": 112.75133
    },
    {
        "latitude": -7.34279,
        "longitude": 112.75186
    },
    {
        "latitude": -7.34296,
        "longitude": 112.75298
    },
    {
        "latitude": -7.34305,
        "longitude": 112.75361
    },
    {
        "latitude": -7.3432,
        "longitude": 112.75458
    },
    {
        "latitude": -7.34323,
        "longitude": 112.7548
    },
    {
        "latitude": -7.3433,
        "longitude": 112.7555
    },
    {
        "latitude": -7.34331,
        "longitude": 112.7557
    },
    {
        "latitude": -7.34329,
        "longitude": 112.75597
    },
    {
        "latitude": -7.34327,
        "longitude": 112.75621
    },
    {
        "latitude": -7.34313,
        "longitude": 112.75684
    },
    {
        "latitude": -7.34284,
        "longitude": 112.75814
    },
    {
        "latitude": -7.34279,
        "longitude": 112.75872
    },
    {
        "latitude": -7.34276,
        "longitude": 112.75907
    },
    {
        "latitude": -7.34277,
        "longitude": 112.75936
    },
    {
        "latitude": -7.34281,
        "longitude": 112.75959
    },
    {
        "latitude": -7.34291,
        "longitude": 112.76015
    },
    {
        "latitude": -7.34299,
        "longitude": 112.76047
    },
    {
        "latitude": -7.34318,
        "longitude": 112.7613
    },
    {
        "latitude": -7.3432,
        "longitude": 112.76146
    },
    {
        "latitude": -7.34324,
        "longitude": 112.7617
    },
    {
        "latitude": -7.34325,
        "longitude": 112.76185
    },
    {
        "latitude": -7.34323,
        "longitude": 112.76223
    },
    {
        "latitude": -7.34318,
        "longitude": 112.76248
    },
    {
        "latitude": -7.34311,
        "longitude": 112.76274
    },
    {
        "latitude": -7.34297,
        "longitude": 112.76307
    },
    {
        "latitude": -7.34262,
        "longitude": 112.76367
    },
    {
        "latitude": -7.34247,
        "longitude": 112.76393
    },
    {
        "latitude": -7.34241,
        "longitude": 112.76411
    },
    {
        "latitude": -7.34234,
        "longitude": 112.76432
    },
    {
        "latitude": -7.34227,
        "longitude": 112.76456
    },
    {
        "latitude": -7.34223,
        "longitude": 112.76475
    },
    {
        "latitude": -7.34223,
        "longitude": 112.76477
    },
    {
        "latitude": -7.34221,
        "longitude": 112.76494
    },
    {
        "latitude": -7.3422,
        "longitude": 112.76508
    },
    {
        "latitude": -7.34221,
        "longitude": 112.7654
    },
    {
        "latitude": -7.34224,
        "longitude": 112.76562
    },
    {
        "latitude": -7.34238,
        "longitude": 112.76621
    },
    {
        "latitude": -7.34248,
        "longitude": 112.76656
    },
    {
        "latitude": -7.34273,
        "longitude": 112.76755
    },
    {
        "latitude": -7.34283,
        "longitude": 112.76799
    },
    {
        "latitude": -7.34289,
        "longitude": 112.76833
    },
    {
        "latitude": -7.34296,
        "longitude": 112.76872
    },
    {
        "latitude": -7.34298,
        "longitude": 112.76882
    },
    {
        "latitude": -7.34302,
        "longitude": 112.76907
    },
    {
        "latitude": -7.34309,
        "longitude": 112.76954
    },
    {
        "latitude": -7.34322,
        "longitude": 112.7703
    },
    {
        "latitude": -7.3435,
        "longitude": 112.77199
    },
    {
        "latitude": -7.34375,
        "longitude": 112.77343
    },
    {
        "latitude": -7.34395,
        "longitude": 112.77469
    },
    {
        "latitude": -7.34412,
        "longitude": 112.77557
    },
    {
        "latitude": -7.34421,
        "longitude": 112.77612
    },
    {
        "latitude": -7.34427,
        "longitude": 112.77648
    },
    {
        "latitude": -7.34436,
        "longitude": 112.77697
    },
    {
        "latitude": -7.34447,
        "longitude": 112.77784
    },
    {
        "latitude": -7.34454,
        "longitude": 112.77819
    },
    {
        "latitude": -7.3447,
        "longitude": 112.77894
    },
    {
        "latitude": -7.34475,
        "longitude": 112.77917
    },
    {
        "latitude": -7.34489,
        "longitude": 112.77971
    },
    {
        "latitude": -7.34493,
        "longitude": 112.77983
    },
    {
        "latitude": -7.34531,
        "longitude": 112.78136
    },
    {
        "latitude": -7.34557,
        "longitude": 112.78245
    },
    {
        "latitude": -7.34621,
        "longitude": 112.78517
    },
    {
        "latitude": -7.34632,
        "longitude": 112.78564
    },
    {
        "latitude": -7.34639,
        "longitude": 112.78593
    },
    {
        "latitude": -7.34651,
        "longitude": 112.7864
    },
    {
        "latitude": -7.34696,
        "longitude": 112.78834
    },
    {
        "latitude": -7.34726,
        "longitude": 112.78961
    },
    {
        "latitude": -7.34752,
        "longitude": 112.79086
    },
    {
        "latitude": -7.34767,
        "longitude": 112.79177
    },
    {
        "latitude": -7.34776,
        "longitude": 112.79214
    },
    {
        "latitude": -7.34787,
        "longitude": 112.79266
    },
    {
        "latitude": -7.34799,
        "longitude": 112.79321
    },
    {
        "latitude": -7.34817,
        "longitude": 112.79419
    },
    {
        "latitude": -7.34859,
        "longitude": 112.7963
    },
    {
        "latitude": -7.34901,
        "longitude": 112.79845
    },
    {
        "latitude": -7.34952,
        "longitude": 112.80108
    },
    {
        "latitude": -7.34959,
        "longitude": 112.80138
    },
    {
        "latitude": -7.34969,
        "longitude": 112.80171
    },
    {
        "latitude": -7.34983,
        "longitude": 112.80203
    },
    {
        "latitude": -7.34989,
        "longitude": 112.80214
    },
    {
        "latitude": -7.35001,
        "longitude": 112.80235
    },
    {
        "latitude": -7.3501,
        "longitude": 112.80247
    },
    {
        "latitude": -7.35025,
        "longitude": 112.80264
    },
    {
        "latitude": -7.35055,
        "longitude": 112.80292
    },
    {
        "latitude": -7.35087,
        "longitude": 112.80315
    },
    {
        "latitude": -7.35118,
        "longitude": 112.80331
    },
    {
        "latitude": -7.35171,
        "longitude": 112.80349
    },
    {
        "latitude": -7.3521,
        "longitude": 112.80357
    },
    {
        "latitude": -7.35377,
        "longitude": 112.80386
    },
    {
        "latitude": -7.35523,
        "longitude": 112.80412
    },
    {
        "latitude": -7.35574,
        "longitude": 112.80423
    },
    {
        "latitude": -7.35606,
        "longitude": 112.80433
    },
    {
        "latitude": -7.35655,
        "longitude": 112.80452
    },
    {
        "latitude": -7.3567,
        "longitude": 112.8046
    },
    {
        "latitude": -7.35719,
        "longitude": 112.80488
    },
    {
        "latitude": -7.35876,
        "longitude": 112.80593
    },
    {
        "latitude": -7.35916,
        "longitude": 112.80616
    },
    {
        "latitude": -7.35946,
        "longitude": 112.80629
    },
    {
        "latitude": -7.35972,
        "longitude": 112.8064
    },
    {
        "latitude": -7.36011,
        "longitude": 112.8065
    },
    {
        "latitude": -7.36035,
        "longitude": 112.80655
    },
    {
        "latitude": -7.36038,
        "longitude": 112.80655
    },
    {
        "latitude": -7.36055,
        "longitude": 112.80657
    },
    {
        "latitude": -7.36082,
        "longitude": 112.80659
    },
    {
        "latitude": -7.36084,
        "longitude": 112.80659
    },
    {
        "latitude": -7.36103,
        "longitude": 112.80658
    },
    {
        "latitude": -7.36131,
        "longitude": 112.80656
    },
    {
        "latitude": -7.3616,
        "longitude": 112.80651
    },
    {
        "latitude": -7.36182,
        "longitude": 112.80646
    },
    {
        "latitude": -7.36221,
        "longitude": 112.80634
    },
    {
        "latitude": -7.3623,
        "longitude": 112.8063
    },
    {
        "latitude": -7.36238,
        "longitude": 112.80627
    },
    {
        "latitude": -7.36247,
        "longitude": 112.80623
    },
    {
        "latitude": -7.36266,
        "longitude": 112.80612
    },
    {
        "latitude": -7.36301,
        "longitude": 112.80591
    },
    {
        "latitude": -7.36323,
        "longitude": 112.80573
    },
    {
        "latitude": -7.36352,
        "longitude": 112.80548
    },
    {
        "latitude": -7.36377,
        "longitude": 112.80519
    },
    {
        "latitude": -7.36398,
        "longitude": 112.8049
    },
    {
        "latitude": -7.36409,
        "longitude": 112.80473
    },
    {
        "latitude": -7.36441,
        "longitude": 112.80416
    },
    {
        "latitude": -7.36447,
        "longitude": 112.80407
    },
    {
        "latitude": -7.36461,
        "longitude": 112.80378
    },
    {
        "latitude": -7.36472,
        "longitude": 112.8036
    },
    {
        "latitude": -7.36477,
        "longitude": 112.80349
    },
    {
        "latitude": -7.36491,
        "longitude": 112.80325
    },
    {
        "latitude": -7.3651,
        "longitude": 112.80297
    },
    {
        "latitude": -7.36543,
        "longitude": 112.80256
    },
    {
        "latitude": -7.36574,
        "longitude": 112.80226
    },
    {
        "latitude": -7.36619,
        "longitude": 112.80192
    },
    {
        "latitude": -7.36641,
        "longitude": 112.80178
    },
    {
        "latitude": -7.36685,
        "longitude": 112.80156
    },
    {
        "latitude": -7.36707,
        "longitude": 112.80148
    },
    {
        "latitude": -7.3673,
        "longitude": 112.80142
    },
    {
        "latitude": -7.36783,
        "longitude": 112.8013
    },
    {
        "latitude": -7.36811,
        "longitude": 112.80127
    },
    {
        "latitude": -7.36848,
        "longitude": 112.80127
    },
    {
        "latitude": -7.36936,
        "longitude": 112.8013
    },
    {
        "latitude": -7.37032,
        "longitude": 112.80133
    },
    {
        "latitude": -7.37068,
        "longitude": 112.80135
    },
    {
        "latitude": -7.37116,
        "longitude": 112.80136
    },
    {
        "latitude": -7.37148,
        "longitude": 112.80135
    },
    {
        "latitude": -7.37163,
        "longitude": 112.80132
    },
    {
        "latitude": -7.37186,
        "longitude": 112.80125
    },
    {
        "latitude": -7.37197,
        "longitude": 112.80119
    },
    {
        "latitude": -7.37209,
        "longitude": 112.80109
    },
    {
        "latitude": -7.37218,
        "longitude": 112.801
    },
    {
        "latitude": -7.37225,
        "longitude": 112.80091
    },
    {
        "latitude": -7.37231,
        "longitude": 112.80079
    },
    {
        "latitude": -7.37238,
        "longitude": 112.80062
    },
    {
        "latitude": -7.3724,
        "longitude": 112.80052
    },
    {
        "latitude": -7.37241,
        "longitude": 112.80044
    },
    {
        "latitude": -7.3724,
        "longitude": 112.80024
    },
    {
        "latitude": -7.37237,
        "longitude": 112.79998
    },
    {
        "latitude": -7.37227,
        "longitude": 112.79952
    },
    {
        "latitude": -7.37214,
        "longitude": 112.79909
    },
    {
        "latitude": -7.37197,
        "longitude": 112.79862
    },
    {
        "latitude": -7.37192,
        "longitude": 112.79848
    },
    {
        "latitude": -7.37183,
        "longitude": 112.7983
    },
    {
        "latitude": -7.37176,
        "longitude": 112.79809
    },
    {
        "latitude": -7.37167,
        "longitude": 112.79773
    },
    {
        "latitude": -7.37164,
        "longitude": 112.79763
    },
    {
        "latitude": -7.37157,
        "longitude": 112.79713
    },
    {
        "latitude": -7.37149,
        "longitude": 112.7965
    },
    {
        "latitude": -7.37139,
        "longitude": 112.79572
    },
    {
        "latitude": -7.37137,
        "longitude": 112.7956
    },
    {
        "latitude": -7.37136,
        "longitude": 112.79548
    },
    {
        "latitude": -7.37127,
        "longitude": 112.79559
    },
    {
        "latitude": -7.3713,
        "longitude": 112.79585
    },
    {
        "latitude": -7.37133,
        "longitude": 112.79609
    },
    {
        "latitude": -7.37153,
        "longitude": 112.79763
    },
    {
        "latitude": -7.37161,
        "longitude": 112.798
    },
    {
        "latitude": -7.3718,
        "longitude": 112.79852
    },
    {
        "latitude": -7.37196,
        "longitude": 112.7989
    },
    {
        "latitude": -7.37206,
        "longitude": 112.79922
    },
    {
        "latitude": -7.37216,
        "longitude": 112.79958
    },
    {
        "latitude": -7.37224,
        "longitude": 112.79997
    },
    {
        "latitude": -7.37228,
        "longitude": 112.80018
    },
    {
        "latitude": -7.37229,
        "longitude": 112.80032
    },
    {
        "latitude": -7.37226,
        "longitude": 112.80061
    },
    {
        "latitude": -7.37223,
        "longitude": 112.80071
    },
    {
        "latitude": -7.37209,
        "longitude": 112.80092
    },
    {
        "latitude": -7.37202,
        "longitude": 112.80099
    },
    {
        "latitude": -7.37193,
        "longitude": 112.80106
    },
    {
        "latitude": -7.37176,
        "longitude": 112.80115
    },
    {
        "latitude": -7.37146,
        "longitude": 112.80121
    },
    {
        "latitude": -7.37121,
        "longitude": 112.80122
    },
    {
        "latitude": -7.3703,
        "longitude": 112.80118
    },
    {
        "latitude": -7.37014,
        "longitude": 112.80116
    },
    {
        "latitude": -7.36935,
        "longitude": 112.80114
    },
    {
        "latitude": -7.36881,
        "longitude": 112.80112
    },
    {
        "latitude": -7.36827,
        "longitude": 112.80112
    },
    {
        "latitude": -7.36796,
        "longitude": 112.80113
    },
    {
        "latitude": -7.36747,
        "longitude": 112.80121
    },
    {
        "latitude": -7.36718,
        "longitude": 112.80128
    },
    {
        "latitude": -7.36692,
        "longitude": 112.80136
    },
    {
        "latitude": -7.36655,
        "longitude": 112.80153
    },
    {
        "latitude": -7.36625,
        "longitude": 112.80169
    },
    {
        "latitude": -7.36586,
        "longitude": 112.80196
    },
    {
        "latitude": -7.36545,
        "longitude": 112.8023
    },
    {
        "latitude": -7.3652,
        "longitude": 112.80259
    },
    {
        "latitude": -7.36503,
        "longitude": 112.8028
    },
    {
        "latitude": -7.36476,
        "longitude": 112.80322
    },
    {
        "latitude": -7.36464,
        "longitude": 112.80343
    },
    {
        "latitude": -7.36459,
        "longitude": 112.80351
    },
    {
        "latitude": -7.36442,
        "longitude": 112.80381
    },
    {
        "latitude": -7.36428,
        "longitude": 112.80406
    },
    {
        "latitude": -7.36421,
        "longitude": 112.80421
    },
    {
        "latitude": -7.36381,
        "longitude": 112.80487
    },
    {
        "latitude": -7.36362,
        "longitude": 112.80512
    },
    {
        "latitude": -7.36352,
        "longitude": 112.80525
    },
    {
        "latitude": -7.36337,
        "longitude": 112.80541
    },
    {
        "latitude": -7.36314,
        "longitude": 112.80561
    },
    {
        "latitude": -7.36294,
        "longitude": 112.80576
    },
    {
        "latitude": -7.36267,
        "longitude": 112.80595
    },
    {
        "latitude": -7.36231,
        "longitude": 112.80613
    },
    {
        "latitude": -7.36223,
        "longitude": 112.80616
    },
    {
        "latitude": -7.36222,
        "longitude": 112.80616
    },
    {
        "latitude": -7.36191,
        "longitude": 112.80628
    },
    {
        "latitude": -7.36168,
        "longitude": 112.80634
    },
    {
        "latitude": -7.36148,
        "longitude": 112.80638
    },
    {
        "latitude": -7.36111,
        "longitude": 112.80642
    },
    {
        "latitude": -7.36084,
        "longitude": 112.80643
    },
    {
        "latitude": -7.36079,
        "longitude": 112.80643
    },
    {
        "latitude": -7.3604,
        "longitude": 112.8064
    },
    {
        "latitude": -7.36005,
        "longitude": 112.80633
    },
    {
        "latitude": -7.35961,
        "longitude": 112.80619
    },
    {
        "latitude": -7.35938,
        "longitude": 112.8061
    },
    {
        "latitude": -7.35916,
        "longitude": 112.80599
    },
    {
        "latitude": -7.35904,
        "longitude": 112.80592
    },
    {
        "latitude": -7.3588,
        "longitude": 112.80577
    },
    {
        "latitude": -7.35855,
        "longitude": 112.80559
    },
    {
        "latitude": -7.35804,
        "longitude": 112.80521
    },
    {
        "latitude": -7.35774,
        "longitude": 112.80499
    },
    {
        "latitude": -7.35744,
        "longitude": 112.80481
    },
    {
        "latitude": -7.35693,
        "longitude": 112.80456
    },
    {
        "latitude": -7.35619,
        "longitude": 112.80422
    },
    {
        "latitude": -7.35594,
        "longitude": 112.80414
    },
    {
        "latitude": -7.35551,
        "longitude": 112.80403
    },
    {
        "latitude": -7.35461,
        "longitude": 112.80385
    },
    {
        "latitude": -7.35382,
        "longitude": 112.80371
    },
    {
        "latitude": -7.35208,
        "longitude": 112.80341
    },
    {
        "latitude": -7.35163,
        "longitude": 112.8033
    },
    {
        "latitude": -7.35146,
        "longitude": 112.80325
    },
    {
        "latitude": -7.35117,
        "longitude": 112.80313
    },
    {
        "latitude": -7.35093,
        "longitude": 112.803
    },
    {
        "latitude": -7.35078,
        "longitude": 112.8029
    },
    {
        "latitude": -7.35045,
        "longitude": 112.80263
    },
    {
        "latitude": -7.35027,
        "longitude": 112.80243
    },
    {
        "latitude": -7.35005,
        "longitude": 112.80211
    },
    {
        "latitude": -7.3499,
        "longitude": 112.8018
    },
    {
        "latitude": -7.34977,
        "longitude": 112.80142
    },
    {
        "latitude": -7.34969,
        "longitude": 112.8011
    },
    {
        "latitude": -7.34916,
        "longitude": 112.79841
    },
    {
        "latitude": -7.34886,
        "longitude": 112.79691
    }
]

Hasil dari koding python diatas jika dijalankan pada google colab seperti gambar berikut ini :


Pada bagian tampilan di web browser, saya gunakan leaflet.js yang merupakan library perpetaan milik OSM yang sangat banyak digunakan, bisa dilihat beberapa aplikasi seperti bus suroboyo pun menggunakan leaflet.js untuk peta realtime pada aplikasi Bus Suroboyo. Saya akan bagikan kodingnya dan dapat disimpan langsung pada PC tanpa menggunakan server, hanya simpan sebagai file html biasa.


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Car GPS Tracking</title>
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
    <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mqtt/4.3.7/mqtt.min.js"></script>
    <style>
        #map {
            height: 100vh;
            width: 100%;
        }
    </style>
</head>
<body>
    <div id="map"></div>
    <script>
        // Initialize the map
        const map = L.map('map').setView([-7.23177, 112.72837], 15); // Initial view at the first GPS point
        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
            maxZoom: 19,
            attribution: '© OpenStreetMap contributors'
        }).addTo(map);

        // Define a custom car icon
        const carIcon = L.icon({
            iconUrl: 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh97sGns5_ZMJSFQPbC-gYR090rGj3OyacILohQ4k_v6OT_niNcR1JSRV_0ZMl2cyry85DKHnuinr8oU_Oaw8ez4Wl6capGSc0EQelQv0zYS18xmW1GGHz7eQTfwbLoLuejhwnuRvBmugL1Si1SJ_zmhMygRSODpUdrneYM6nmSb1lle6sz5riVcFAsapC/s50/car.png', // Replace with your car image URL		
            iconSize: [38, 38], // Size of the icon (width, height)
            iconAnchor: [19, 19], // Point of the icon which corresponds to the marker's location
        });

        // Marker for the car
        let carMarker = null;

        // Array to store the trail points
        const trailPoints = [];

        // Polyline for the trail
        const trailLine = L.polyline(trailPoints, { color: 'blue' }).addTo(map);

        // MQTT Client Setup
        // GANTI PAKE AKUN KAMU ..ini punya pak nyoman
		const client = mqtt.connect('wss://xxxxxxxxxx.s1.eu.hivemq.cloud:8884/mqtt', {
		username: 'user', // Replace with your HiveMQ Cloud username
		password: 'pass', // Replace with your HiveMQ Cloud password
		protocol: 'wss', // Ensure WebSocket Secure (WSS) is used
		rejectUnauthorized: true // Optional: Set to false if using self-signed certificates (not recommended for production)
});
        client.on('connect', () => {
            console.log('Connected to MQTT broker');
            client.subscribe('car/gps', (err) => {
                if (!err) {
                    console.log('Subscribed to car/gps topic');
                }
            });
        });

        // Handle incoming GPS data
        client.on('message', (topic, message) => {
            const data = JSON.parse(message.toString());
            const { latitude, longitude } = data;

            console.log(`Received GPS data: Latitude=${latitude}, Longitude=${longitude}`);

            // Add the new point to the trail
            trailPoints.push([latitude, longitude]);

            // Update the trail polyline
            trailLine.setLatLngs(trailPoints);

            // Update the car marker position
            if (carMarker) {
                carMarker.setLatLng([latitude, longitude]);
            } else {
                carMarker = L.marker([latitude, longitude], { icon: carIcon }).addTo(map);
            }

            // Center the map on the car's position
            map.setView([latitude, longitude], 15);
        });
    </script>
</body>
</html>



Tampilan web nya  seperti pada animasi paling atas halaman ini, dan untuk melihat perjalanan pengiriman titik koordinatnya melalui MQTT dapat dilihat dengan klik kanan-inspeksi-console, seperti contoh berikut :






Diagram kerja dari simulasi diatas mirp-mirip dengan yang sering kita bahas mengenai topik IOT - MQTT di blog ini dan mungkin para pembaca setia sudah hapal dengan skema dibawah ini.



Selamat Mencoba !
Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (28) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (78) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) unesa (3) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (9)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika