Ultra-robust data mapping for GIS imports
Deploy TrassenPlaner / deploy (push) Waiting to run Details

This commit is contained in:
Johannes Baumeister 2026-04-20 10:10:58 +02:00
parent 805794756f
commit 945b01b8f4
1 changed files with 16 additions and 3 deletions

View File

@ -2817,12 +2817,25 @@
features.forEach(f => {
const p = f.properties || {};
const varName = p.Variante ? `Variante ${p.Variante}` : (p.name || "Variante A");
// Robustly find 'Variante' (case-insensitive)
const rawVariante = p.Variante || p.variante || p.VARIANTE || '';
const rawName = p.name || p.Name || p.NAME || '';
const varName = rawVariante ? `Variante ${rawVariante}` : (rawName || "Variante A");
const slot = state.variants.find(lv => lv.name === varName);
if (slot && f.geometry && f.geometry.coordinates) {
slot.id = f.id || p.id || slot.id;
slot.routes = f.geometry.coordinates.map(c => ({ lat: c[1], lng: c[0] }));
slot.id = f.id || p.fid || p.id || p._id || slot.id;
// Handle potential nested coordinate arrays from different GIS exports
let coords = f.geometry.coordinates;
if (f.geometry.type === "LineString") {
slot.routes = coords.map(c => ({ lat: c[1], lng: c[0] }));
} else if (f.geometry.type === "MultiLineString") {
// Take the first segment of a MultiLineString if it's imported that way
slot.routes = coords[0].map(c => ({ lat: c[1], lng: c[0] }));
}
// Re-sync the polyline layer if it exists
if (routeLayers[slot.id]) {
routeLayers[slot.id].setLatLngs(slot.routes);