diff --git a/index.html b/index.html
index e890cf1..84d7138 100644
--- a/index.html
+++ b/index.html
@@ -1807,30 +1807,8 @@
layer.setStyle({ opacity: 0.3, weight: 4, color: '#cca300' });
}
- // Labels aktualisieren (Name in der Mitte der Linie auf weißem Hintergrund)
- labelLayer.clearLayers();
- const latLngs = (v.routes || []).map(ll => { try { return L.latLng(ll); } catch(e) { return null; } }).filter(ll => !!ll && typeof ll.lat === 'number');
- if (latLngs.length >= 2) {
- try {
- const line = turf.lineString(latLngs.map(ll => [ll.lng, ll.lat]));
- const totalKm = turf.length(line, { units: 'kilometers' });
- const midPoint = turf.along(line, totalKm / 2, { units: 'kilometers' });
- const midPos = L.latLng(midPoint.geometry.coordinates[1], midPoint.geometry.coordinates[0]);
-
- L.marker(midPos, {
- pane: 'labelPane',
- icon: L.divIcon({
- className: 'variant-map-label',
- html: `
${v.name}
`,
- iconSize: [0, 0],
- iconAnchor: [0, 0]
- }),
- interactive: false
- }).addTo(labelLayer);
- } catch (err) {
- console.warn("Label positioning failed:", err);
- }
- }
+ // Labels aktualisieren
+ updateRouteLabels(v);
// Sync edit state
if (layer.enableEdit) {
@@ -1942,16 +1920,24 @@
labelGroup.clearLayers();
if (variant.routes && variant.routes.length > 1) {
- const midIndex = Math.floor(variant.routes.length / 2);
- const pos = variant.routes[midIndex];
+ // Determine midpoint using Turf to follow the line exactly
+ const latLngs = variant.routes.map(ll => { try { return L.latLng(ll); } catch(e) { return null; } }).filter(ll => !!ll && typeof ll.lat === 'number');
+ let pos = variant.routes[Math.floor(variant.routes.length / 2)];
+ try {
+ const line = turf.lineString(latLngs.map(ll => [ll.lng, ll.lat]));
+ const totalKm = turf.length(line, { units: 'kilometers' });
+ const midPoint = turf.along(line, totalKm / 2, { units: 'kilometers' });
+ pos = L.latLng(midPoint.geometry.coordinates[1], midPoint.geometry.coordinates[0]);
+ } catch(e) {}
if (pos) {
L.marker(pos, {
+ interactive: false,
+ pane: 'labelPane',
icon: L.divIcon({
- className: 'route-label',
- html: `${variant.name}
`,
- iconSize: [80, 20],
- iconAnchor: [40, 10]
+ className: '', // Avoid Leaflet default sizing wrappers
+ html: `${variant.name}
`,
+ iconSize: null
})
}).addTo(labelGroup);
}
@@ -2902,6 +2888,11 @@
}
state.owners = gj;
updateOwnerLayer();
+
+ // Zoom to owner data if available
+ if (layers.owners && layers.owners.getBounds().isValid()) {
+ map.fitBounds(layers.owners.getBounds(), { padding: [20, 20] });
+ }
}
} catch (e) { console.error("[V3-Sync] Owners Error:", e); }