Cara Integrasi Leaflet dan HTML5 Geolocation untuk Absensi Foto Otomatis Berbasis Titik Koordinat

Ilustrasi sistem absensi foto otomatis berbasis GPS menggunakan Leaflet dan HTML5 Geolocation di CodeIgniter 4 dengan peta interaktif dan titik koordinat real-time

Cara Integrasi Leaflet dan HTML5 Geolocation untuk Absensi Foto Otomatis Berbasis Titik Koordinat

Banyak sistem absensi online gagal bukan karena desainnya buruk, tetapi karena validasi lokasinya tidak akurat. Beberapa aplikasi hanya mengambil koordinat secara sederhana tanpa memastikan akurasi GPS, tanpa menampilkan visual peta, dan tanpa sinkronisasi dengan server. Akibatnya, data absensi menjadi kurang presisi dan berpotensi dimanipulasi.

Dalam tren digitalisasi HR saat ini, perusahaan mulai menggabungkan teknologi GPS, kamera perangkat, dan pemetaan interaktif untuk menciptakan sistem presensi digital yang lebih transparan. Transformasi ini bukan sekadar mengikuti perkembangan teknologi, tetapi menjawab kebutuhan kerja hybrid dan mobilitas tinggi yang terus meningkat.

Jika Anda sudah memahami konsep pembatasan area menggunakan polygon pada artikel sebelumnya tentang geofencing, maka tahap berikutnya adalah mengintegrasikan Leaflet JS dan HTML5 Geolocation agar sistem absensi dapat mengambil koordinat secara real-time sekaligus menampilkan titik lokasi pada peta. Artikel ini akan memandu Anda membuat sistem absensi foto otomatis berbasis titik koordinat menggunakan CodeIgniter 4 dan JavaScript.

Mengapa Menggunakan Leaflet dan HTML5 Geolocation?

Leaflet adalah library JavaScript ringan untuk menampilkan peta interaktif. Sementara HTML5 Geolocation API memungkinkan browser mengambil latitude dan longitude dari perangkat pengguna. Kombinasi keduanya sangat cocok untuk membangun sistem absensi berbasis lokasi.

  • Leaflet → menampilkan peta dan marker lokasi
  • Geolocation API → mengambil koordinat GPS
  • CodeIgniter 4 → backend penyimpanan dan validasi data

Struktur Sistem Absensi Foto Berbasis Titik Koordinat

Alur sistem:

  • User membuka halaman absensi
  • Browser meminta izin lokasi
  • Sistem mengambil latitude & longitude
  • Lokasi ditampilkan di peta
  • User mengambil foto selfie
  • Data dikirim ke server

Untuk sistem lengkap validasi titik poin, Anda bisa membaca artikel utama berikut:

Absensi Foto GPS Berdasarkan Titik Poin Menggunakan CodeIgniter 4, Leaflet, JS

Implementasi Frontend: Integrasi Leaflet dan Geolocation

<div id="map" style="height:400px;"></div> <button onclick="getLocation()">Ambil Lokasi</button> <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css"/> <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> <script> var map = L.map('map').setView([-6.200000, 106.816666], 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19 }).addTo(map); var marker; function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition, showError, { enableHighAccuracy: true, timeout: 10000 }); } else { alert("Geolocation tidak didukung browser ini."); } } function showPosition(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; document.getElementById("lat").value = lat; document.getElementById("lng").value = lng; if(marker){ map.removeLayer(marker); } marker = L.marker([lat, lng]).addTo(map); map.setView([lat, lng], 18); } function showError(error) { alert("Gagal mengambil lokasi: " + error.message); } </script> <input type="hidden" id="lat" name="lat"> <input type="hidden" id="lng" name="lng"> {codeBox}

Menambahkan Fitur Foto Selfie Otomatis

<input type="file" accept="image/*" capture="user" name="photo"> {codeBox}

Atribut capture="user" akan langsung membuka kamera depan pada perangkat mobile.

Backend CodeIgniter 4 untuk Menyimpan Data

public function submitAbsen() { $lat = $this->request->getPost('lat'); $lng = $this->request->getPost('lng'); $photo = $this->request->getFile('photo'); $photoName = $photo->getRandomName(); $photo->move('uploads', $photoName); $this->absensiModel->save([ 'latitude' => $lat, 'longitude' => $lng, 'photo' => $photoName, 'created_at' => date('Y-m-d H:i:s') ]); return redirect()->back()->with('success','Absensi berhasil disimpan'); } {codeBox}

Menambahkan Validasi Akurasi GPS

Untuk meningkatkan keamanan sistem absensi berbasis GPS, gunakan validasi akurasi:

if(position.coords.accuracy > 50){ alert("Akurasi GPS kurang baik, silakan ulangi."); return; } {codeBox}

Nilai accuracy di bawah 50 meter biasanya cukup aman untuk absensi kantor.

Optimasi Keamanan Sistem

  • Gunakan HTTPS agar Geolocation berjalan optimal
  • Simpan timestamp server, bukan waktu dari client
  • Kombinasikan dengan validasi polygon geofencing
  • Tambahkan validasi device fingerprint

Untuk pembatasan area lebih presisi menggunakan polygon map, silakan baca panduan lengkap berikut:

Implementasi Geofencing pada Sistem Absensi Online dengan Polygon Map di CodeIgniter 4

Strategi Integrasi dengan Sistem Titik Poin

Jika Anda ingin menggabungkan sistem ini dengan validasi titik poin (radius tertentu dari lokasi kantor), maka kombinasi berikut sangat direkomendasikan:

  • Validasi koordinat real-time
  • Tampilkan marker lokasi
  • Validasi radius jarak
  • Validasi polygon area
  • Simpan bukti foto selfie

Integrasi lengkap sistem tersebut telah dijelaskan secara detail pada artikel utama yang membahas titik poin absensi berbasis GPS dan Leaflet JS.

Kesimpulan

Integrasi Leaflet dan HTML5 Geolocation adalah fondasi utama dalam membangun sistem absensi foto berbasis titik koordinat. Dengan menampilkan peta interaktif dan mengambil lokasi real-time, sistem menjadi lebih transparan dan sulit dimanipulasi.

Jika dikombinasikan dengan geofencing polygon serta validasi radius, sistem absensi digital Anda akan jauh lebih aman dan profesional. Implementasi ini sangat cocok untuk perusahaan modern yang ingin meningkatkan akurasi presensi tanpa bergantung pada mesin fingerprint konvensional.

Langkah selanjutnya adalah menggabungkan seluruh metode ini dalam satu ekosistem absensi berbasis CodeIgniter 4 yang terintegrasi penuh antara frontend dan backend.

Gatot

Penulis merupakan seorang IT profesional baik network engineer, software development(Delphi, Java, Android, iOS, PHP, NextJs, Golang, Flutter), System Analysis, SEO, database administrator, troubleshooting, dan juga content creator(facebook, youtube, atau tiktok). Tulisan merupakan bagian yang pernah dikerjakan dan dilakukan setiap hari.

Lebih baru Lebih lama

Contact