// ========================================== // 1. INISIALISASI PETA & LAYER // ========================================== var map = L.map('map', { zoomControl: false }).setView([-0.0227, 109.3425], 14); // Zoom control di kanan bawah (lebih bersih) L.control.zoom({ position: 'bottomright' }).addTo(map); // Custom pane initialization removed L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); // Layer Group untuk masing-masing data var drawnItems = new L.FeatureGroup().addTo(map); //var batasKotaLayer = L.layerGroup().addTo(map); //var sungaiLayer = L.layerGroup().addTo(map); var rumahIbadahLayer = L.layerGroup().addTo(map); var radiusLayer = L.layerGroup().addTo(map); var pendudukMiskinLayer = L.layerGroup().addTo(map); // Inisialisasi Heatmap kosong (akan diisi datanya saat load data) var povertyHeatLayer = L.heatLayer([], { radius: 22, blur: 18, maxZoom: 17 }).addTo(map); // Inisialisasi Layers Control (di kanan atas) var overlayMaps = { "🕌 Rumah Ibadah": rumahIbadahLayer, "🔥 Kepadatan Kemiskinan (Heatmap)": povertyHeatLayer, "👥 Penduduk Terdekat (Analisis)": pendudukMiskinLayer }; L.control.layers(null, overlayMaps, { collapsed: true, position: 'bottomleft' }).addTo(map); // ========================================== // ICON DEFINITIONS // ========================================== // Unused marker icons removed // Icon Rumah Ibadah Kustom — bangunan rumah ibadah bergaya universal var rumahIbadahIcon = L.divIcon({ className: '', html: `
`, iconSize: [38, 38], iconAnchor: [19, 38], popupAnchor: [0, -38] }); // Leaflet Draw toolbar removed // ========================================== // 3. FUNGSI LOAD DATA DARI DATABASE // ========================================== /* function loadBatasKota() { batasKotaLayer.clearLayers(); var grupKecamatan = {}; fetch('adminKecamatan.json') .then(res => res.json()) .then(data => { L.geoJSON(data, { style: function () { return { color: "#00FF00", weight: 2, opacity: 1, fillOpacity: 0.1 }; }, onEachFeature: function (feature, layer) { var namaKec = feature.properties.Ket; var popupHTML = `