From 945b01b8f430fb308c4385883b83377bf71bed74 Mon Sep 17 00:00:00 2001 From: Johannes Baumeister Date: Mon, 20 Apr 2026 10:10:58 +0200 Subject: [PATCH] Ultra-robust data mapping for GIS imports --- index.html | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index ea68c6f..0bfdab0 100644 --- a/index.html +++ b/index.html @@ -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);