(function(){ function kfInit(){ if (typeof L === 'undefined') { setTimeout(kfInit, 300); return; } var el = document.getElementById('kf-findfor-map'); if (!el || el.dataset.kfi) return; var dataEl = document.getElementById('kf-findfor-data'); if (!dataEl) return; var data; try { data = JSON.parse(dataEl.textContent || '[]'); } catch(e) { return; } el.dataset.kfi = '1'; var map = L.map(el).setView([56, 11], 6); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '(c) OpenStreetMap', maxZoom: 18 }).addTo(map); var iconFor = function(t){ var c = t === 'andelshave' ? '#BA7517' : t === 'daghave' ? '#4c8bd8' : '#1f5e2a'; return L.divIcon({ className: 'kfp', html: '
', iconSize: [22, 22], iconAnchor: [11, 22] }); }; var cluster = (typeof L.markerClusterGroup === 'function') ? L.markerClusterGroup({maxClusterRadius: 40}) : L.layerGroup(); var validPts = []; data.forEach(function(it){ if (!it.lat || !it.lng) return; var m = L.marker([it.lat, it.lng], {icon: iconFor(it.type)}); m.bindPopup('' + it.title + ''); cluster.addLayer(m); validPts.push([it.lat, it.lng]); }); map.addLayer(cluster); if (validPts.length > 1) { try { map.fitBounds(L.latLngBounds(validPts), {padding: [30, 30]}); } catch(e){} } } if (document.readyState === 'complete' || document.readyState === 'interactive') { setTimeout(kfInit, 100); } else { document.addEventListener('DOMContentLoaded', function(){ setTimeout(kfInit, 100); }); } window.addEventListener('load', function(){ setTimeout(kfInit, 300); }); setTimeout(kfInit, 1500); })();