Fix deployed data rendering and database fallback
This commit is contained in:
+17
-3
@@ -316,6 +316,17 @@ const layerJalan = L.layerGroup().addTo(map);
|
||||
const layerParsil = L.layerGroup().addTo(map);
|
||||
const layerRusak = L.layerGroup().addTo(map);
|
||||
|
||||
function parseGeojsonSafe(raw){
|
||||
try {
|
||||
const gj = typeof raw === 'string' ? JSON.parse(raw) : raw;
|
||||
if (!gj || !gj.geometry || !gj.geometry.type) return null;
|
||||
return gj;
|
||||
} catch(e) {
|
||||
console.warn('GeoJSON tidak valid:', raw);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// =============================================================
|
||||
// 2. WARNA & IKON
|
||||
// =============================================================
|
||||
@@ -688,7 +699,8 @@ async function loadJalan(q=''){
|
||||
if(!data.length){ list.innerHTML='<div class="empty-state"><i class="fas fa-road"></i><p>'+(q?'Tidak ada hasil pencarian':'Belum ada data jalan')+'</p></div>'; return; }
|
||||
list.innerHTML='';
|
||||
data.forEach(item=>{
|
||||
const gj = JSON.parse(item.geojson);
|
||||
const gj = parseGeojsonSafe(item.geojson);
|
||||
if (!gj) { console.warn('Lewati data jalan tanpa geometry valid', item); return; }
|
||||
const style = WARNA_JALAN[item.status_jalan]||WARNA_JALAN['Kabupaten'];
|
||||
const layer = L.geoJSON(gj,{style}).addTo(layerJalan);
|
||||
layer.bindPopup(`
|
||||
@@ -739,7 +751,8 @@ async function loadParsil(q=''){
|
||||
if(!data.length){ list.innerHTML='<div class="empty-state"><i class="fas fa-map"></i><p>'+(q?'Tidak ada hasil pencarian':'Belum ada data parsil')+'</p></div>'; return; }
|
||||
list.innerHTML='';
|
||||
data.forEach(item=>{
|
||||
const gj = JSON.parse(item.geojson);
|
||||
const gj = parseGeojsonSafe(item.geojson);
|
||||
if (!gj) { console.warn('Lewati data parsil tanpa geometry valid', item); return; }
|
||||
const style = WARNA_PARSIL[item.status_kepemilikan]||WARNA_PARSIL['SHM'];
|
||||
const layer = L.geoJSON(gj,{style}).addTo(layerParsil);
|
||||
layer.bindPopup(`
|
||||
@@ -794,7 +807,8 @@ async function loadRusak(q=''){
|
||||
if(!data.length){ list.innerHTML='<div class="empty-state"><i class="fas fa-exclamation-triangle"></i><p>'+(q?'Tidak ada hasil pencarian':'Belum ada data jalan rusak')+'</p></div>'; return; }
|
||||
list.innerHTML='';
|
||||
data.forEach(item=>{
|
||||
const gj = JSON.parse(item.geojson);
|
||||
const gj = parseGeojsonSafe(item.geojson);
|
||||
if (!gj || !Array.isArray(gj.geometry.coordinates)) { console.warn('Lewati data jalan rusak tanpa geometry valid', item); return; }
|
||||
const cfg = WARNA_RUSAK[item.tingkat]||WARNA_RUSAK['Sedang'];
|
||||
const coord = gj.geometry.coordinates; // [lng, lat]
|
||||
const layer = L.circleMarker([coord[1],coord[0]], cfg).addTo(layerRusak);
|
||||
|
||||
Reference in New Issue
Block a user