diff --git a/app.js b/app.js index f87eaaf..8144933 100644 --- a/app.js +++ b/app.js @@ -1105,6 +1105,72 @@ document.addEventListener('DOMContentLoaded', async () => { const statusEl = document.getElementById('statusInfo'); const isLocalFile = globalThis.location?.protocol === 'file:'; + const createDbLayer = (geojsonData, name, styleFunc, isFreileitung) => { + if (!geojsonData || !geojsonData.features || geojsonData.features.length === 0) return; + + const layer = L.geoJSON(geojsonData, { + style: styleFunc, + onEachFeature: (feature, l) => { + if (feature.properties) { + let popup = `${name}

`; + for (let key in feature.properties) { + const val = feature.properties[key]; + if (val !== null && val !== undefined) popup += `${key}: ${val}
`; + } + l.bindPopup(popup); + } + } + }); + if (overlays[name]) { + state.map.removeLayer(overlays[name]); + layerControl.removeLayer(overlays[name]); + } + overlays[name] = layer; + state.map.addLayer(layer); + layerControl.addOverlay(layer, name); + + // In bakedData eintragen für die Abstandslinien (updateProximityLines) + state.bakedData[name] = { data: geojsonData, style: styleFunc() }; + + // Dynamischer Turf Buffer für Freileitungen + if (isFreileitung) { + try { + const bufferedFeatures = []; + geojsonData.features.forEach(f => { + let dist = 0.05; // 50m default + const spannung = (f.properties.spannung || '').toString().toLowerCase(); + if (spannung.includes('110')) dist = 0.035; + else if (spannung.includes('380')) dist = 0.05; + + const b = turf.buffer(f, dist, {units: 'kilometers'}); + if (b) bufferedFeatures.push(b); + }); + + if (bufferedFeatures.length > 0) { + const bufferLayer = L.geoJSON({ type: 'FeatureCollection', features: bufferedFeatures }, { + style: { + color: '#ffff00', + weight: 0, + fillColor: '#ffff00', + fillOpacity: 0.3 + } + }); + const bufferName = name + " (Puffer)"; + if (overlays[bufferName]) { + state.map.removeLayer(overlays[bufferName]); + layerControl.removeLayer(overlays[bufferName]); + } + overlays[bufferName] = bufferLayer; + state.map.addLayer(bufferLayer); + layerControl.addOverlay(bufferLayer, bufferName); + bufferLayer.bringToBack(); + } + } catch(err) { + console.error("Fehler beim Erstellen des Puffers für " + name, err); + } + } + }; + try { // Priority 1: Use globalThis.BAKED_DATA if available (Standalone Mode) if (globalThis.BAKED_DATA) { @@ -1253,72 +1319,6 @@ document.addEventListener('DOMContentLoaded', async () => { }); } - const createDbLayer = (geojsonData, name, styleFunc, isFreileitung) => { - if (geojsonData.features.length === 0) return; - - const layer = L.geoJSON(geojsonData, { - style: styleFunc, - onEachFeature: (feature, l) => { - if (feature.properties) { - let popup = `${name}

`; - for (let key in feature.properties) { - const val = feature.properties[key]; - if (val !== null && val !== undefined) popup += `${key}: ${val}
`; - } - l.bindPopup(popup); - } - } - }); - if (overlays[name]) { - state.map.removeLayer(overlays[name]); - layerControl.removeLayer(overlays[name]); - } - overlays[name] = layer; - state.map.addLayer(layer); - layerControl.addOverlay(layer, name); - - // In bakedData eintragen für die Abstandslinien (updateProximityLines) - state.bakedData[name] = { data: geojsonData, style: styleFunc() }; - - // Dynamischer Turf Buffer für Freileitungen - if (isFreileitung) { - try { - const bufferedFeatures = []; - geojsonData.features.forEach(f => { - let dist = 0.05; // 50m default - const spannung = (f.properties.spannung || '').toString().toLowerCase(); - if (spannung.includes('110')) dist = 0.035; - else if (spannung.includes('380')) dist = 0.05; - - const b = turf.buffer(f, dist, {units: 'kilometers'}); - if (b) bufferedFeatures.push(b); - }); - - if (bufferedFeatures.length > 0) { - const bufferLayer = L.geoJSON({ type: 'FeatureCollection', features: bufferedFeatures }, { - style: { - color: '#ffff00', - weight: 0, - fillColor: '#ffff00', - fillOpacity: 0.3 - } - }); - const bufferName = name + " (Puffer)"; - if (overlays[bufferName]) { - state.map.removeLayer(overlays[bufferName]); - layerControl.removeLayer(overlays[bufferName]); - } - overlays[bufferName] = bufferLayer; - state.map.addLayer(bufferLayer); - layerControl.addOverlay(bufferLayer, bufferName); - bufferLayer.bringToBack(); - } - } catch(err) { - console.error("Fehler beim Erstellen des Puffers für " + name, err); - } - } - }; - createDbLayer(freileitungen, "Freileitungen (DB)", () => ({ color: '#ccaa00', weight: 3, fillOpacity: 0 }), true); createDbLayer(wasserstoff, "Wasserstoffleitungen (DB)", () => ({ color: '#9400d3', weight: 2.5, fillOpacity: 0 }), false);