|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
const categoryFilter = document.getElementById('category-filter'); |
|
|
const yearFilter = document.getElementById('year-filter'); |
|
|
const crimeFilter = document.getElementById('crime-filter'); |
|
|
const resetButton = document.getElementById('reset-filter'); |
|
|
const mapContainer = document.getElementById('mapContainer'); |
|
|
const infoPanel = document.getElementById('infoPanel'); |
|
|
const closeInfoPanel = document.getElementById('closeInfoPanel'); |
|
|
const infoPanelBody = document.getElementById('infoPanelBody'); |
|
|
|
|
|
|
|
|
let map = L.map(mapContainer).setView([-7.275, 112.641], 8); |
|
|
|
|
|
|
|
|
fetch('/data/geojson/jatim.geojson') |
|
|
.then(response => response.json()) |
|
|
.then(data => { |
|
|
L.geoJSON(data, { |
|
|
onEachFeature: function(feature, layer) { |
|
|
layer.on('click', function() { |
|
|
infoPanelBody.innerHTML = `<h4>${feature.properties.name}</h4><p>${feature.properties.info}</p>`; |
|
|
infoPanel.style.display = 'block'; |
|
|
}); |
|
|
} |
|
|
}).addTo(map); |
|
|
}); |
|
|
|
|
|
|
|
|
closeInfoPanel.addEventListener('click', function() { |
|
|
infoPanel.style.display = 'none'; |
|
|
}); |
|
|
|
|
|
|
|
|
categoryFilter.addEventListener('change', updateMap); |
|
|
yearFilter.addEventListener('change', updateMap); |
|
|
crimeFilter.addEventListener('change', updateMap); |
|
|
|
|
|
resetButton.addEventListener('click', function() { |
|
|
categoryFilter.value = 'all'; |
|
|
yearFilter.value = 'all'; |
|
|
crimeFilter.value = 'all'; |
|
|
updateMap(); |
|
|
}); |
|
|
|
|
|
function updateMap() { |
|
|
|
|
|
|
|
|
} |
|
|
}); |