diff --git a/app.js b/app.js index 062c99c..f87eaaf 100644 --- a/app.js +++ b/app.js @@ -1326,15 +1326,48 @@ document.addEventListener('DOMContentLoaded', async () => { console.warn("Leitungsverläufe-Layer konnte nicht geladen werden."); } - // Wohngebäude laden - console.log("Lade Wohngebäude aus Datenbank..."); + // Gebäude laden + console.log("Lade Gebäude aus Datenbank..."); const gebaudeResp = await fetch('/api/layers/gebaeude').catch(err => { - console.error("Netzwerkfehler beim Laden der Wohngebäude:", err); + console.error("Netzwerkfehler beim Laden der Gebäude:", err); return null; }); if (gebaudeResp?.ok) { const data = await gebaudeResp.json(); + console.log(`Gebäude API: ${data.features ? data.features.length : 0} Features erhalten.`); + if (data.features && data.features.length > 0) { + const layerName = "Gebäude (DB)"; + const gebaudeLayer = L.geoJSON(data, { + style: { + color: "gray", + weight: 1, + fillColor: "gray", + fillOpacity: 0.5 + } + }); + + if (overlays[layerName]) { + state.map.removeLayer(overlays[layerName]); + layerControl.removeLayer(overlays[layerName]); + } + overlays[layerName] = gebaudeLayer; + state.map.addLayer(gebaudeLayer); + layerControl.addOverlay(gebaudeLayer, layerName); + } + } else { + console.warn("Gebäude-Layer konnte nicht geladen werden."); + } + + // Wohngebäude laden + console.log("Lade Wohngebäude aus Datenbank..."); + const wohngebaudeResp = await fetch('/api/layers/wohngebeaude').catch(err => { + console.error("Netzwerkfehler beim Laden der Wohngebäude:", err); + return null; + }); + + if (wohngebaudeResp?.ok) { + const data = await wohngebaudeResp.json(); console.log(`Wohngebäude API: ${data.features ? data.features.length : 0} Features erhalten.`); createDbLayer(data, "Wohngebäude (DB)", () => ({ color: "red", diff --git a/server.js b/server.js index 1eb514b..fb21fb2 100644 --- a/server.js +++ b/server.js @@ -338,6 +338,31 @@ app.get('/api/layers/leitungsverlaeufe', async (req, res) => { // NEU: API zum Laden der Gebäude app.get('/api/layers/gebaeude', async (req, res) => { + log("Lade Gebäude aus Datenbank..."); + try { + const result = await pool.query( + `SELECT jsonb_build_object( + 'type', 'FeatureCollection', + 'features', COALESCE(jsonb_agg(features.feature), '[]'::jsonb) + ) + FROM ( + SELECT jsonb_build_object( + 'type', 'Feature', + 'geometry', ST_AsGeoJSON(ST_Transform(geom, 4326))::jsonb, + 'properties', jsonb_build_object() + ) AS feature + FROM geodaten.gebaeude + ) features` + ); + res.json(result.rows[0].jsonb_build_object); + } catch (err) { + log(`FEHLER beim Laden der Gebäude: ${err.message}`); + res.status(500).json({ error: err.message }); + } +}); + +// NEU: API zum Laden der Wohngebäude +app.get('/api/layers/wohngebeaude', async (req, res) => { log("Lade Wohngebäude aus Datenbank..."); try { const result = await pool.query(