SAN ANTONIO – Voor het derde achtereenvolgende jaar zag San Antonio een aanzienlijke daling van het aantal gerapporteerde moorden.
Het aantal gerapporteerde moorden is blijven dalen sinds de COVID-19-pandemie, toen het aantal moorden het hoogste punt bereikte sinds minstens het midden van de jaren negentig.
Hieronder vindt u een interactieve kaart die laat zien waar in 2025 moorden in de stad werden gemeld:
San Antonio-moorden 2025
| Datum ↕ | Locatie ↕ | ZIP ↕ | Naam van het slachtoffer ↕ | Slachtoffer leeftijd ↕ | Verdachte naam ↕ | Verdachte leeftijd ↕ | Kracht gebruikt ↕ |
|---|
‘; popupHtml += ‘
‘; popupHtml += ‘
‘; popupHtml += ‘
‘; popupHtml += ‘
‘; popupHtml += ‘
‘; marker.bindPopup(popupHtml); markeringen(locId) = markering; }); } functie focusOnLocation(locId) {selectedLocation = locId; const item = mapData.find(d => (d(locationKey) || d.name) === locId); als (!item) terugkeert; map.setView(item.coords, 13); document.querySelectorAll(“#dataTable tbody tr”).forEach(r => r.classList.remove(“highlight”)); mapData.forEach(d => { if ((d(locationKey) || d.name) === locId && d._row) d._row.classList.add(“highlight”); }); setTimeout(() => { const marker = markers(locId); if (marker) marker.openPopup(); }, 400); } document.getElementById(“showAllBtn”).addEventListener(“click”, () => {selectedLocation = null; Object.values(markers).forEach(m => map.removeLayer(m)); markers = {}; const bounds = L.latLngBounds(mapData.map(d => d.coords)); map.fitBounds(bounds, { opvulling: (40, 40) }); map.once(“moveend”, () => renderMarkers()); document.querySelectorAll(“#dataTable tbody tr”).forEach(r => r.classList.remove(“highlight”)); function updateSortIcons() { document.querySelectorAll(“#dataTable th”).forEach(th => { const col = th.dataset.col; const arrow = th.querySelector(“.arrow”); if (!arrow) return; arrow.textContent = currentSort.col === col ? (currentSort.asc ? “▲” : “▼”) : “↕”; }); } function parseDate(dateStr) { const (maand, dag, jaar) = dateStr.split(“https://www.ksat.com/”); retourneer nieuwe datum (jaar, maand – 1, dag); } function parseAge(ageStr) { if (ageStr === ‘Onbekend’) return -1; const num = parseInt(ageStr); return isNaN(getal) ? -1: aantal; } document.querySelectorAll(“#dataTable th”).forEach(th => { if (th.classList.contains(“unsortable”)) return; th.addEventListener(“click”, () => { const col = th.dataset.col; currentSort.asc = currentSort.col === col ? !currentSort.asc : true; currentSort.col = col; mapData.sort((a, b) => { let valA, valB; if (col === “Datum”) { valA = parseDate(a.Datum); valB = parseDate(b.Datum); } else if (col === “Leeftijd slachtoffer” || col === “Verdachte leeftijd”) { valA = parseAge(a(col)); valB = parseAge(b(col)); } else if (col === “ZIP”) { valA = parseInt(a.ZIP); valB = parseInt(b.ZIP); } else { valA = a(col) || “”; valB = b(col) || “”; if (typeof valA === “string”) valA = valA.toLowerCase(); if (typeof valB === “string”) valB = valB.toLowerCase(); } if (valA < valB) retourneert currentSort.asc }); initTabel(); updateSortIcons(); renderMarkers(); const grenzen = L.latLngBounds(mapData.map(d => d.coords)); map.fitBounds(grenzen, {opvulling: (40, 40) });