feat: separate residential buildings and general buildings layers
Deploy Standortplaner / deploy (push) Successful in 18s Details

This commit is contained in:
Johannes Baumeister 2026-06-24 21:30:28 +02:00
parent bbd531f5a1
commit e68bee0bb1
2 changed files with 61 additions and 3 deletions

39
app.js
View File

@ -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",

View File

@ -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(