diff --git a/src/lib/components/WindkarteMap.svelte b/src/lib/components/WindkarteMap.svelte index aae832d..d8a197b 100644 --- a/src/lib/components/WindkarteMap.svelte +++ b/src/lib/components/WindkarteMap.svelte @@ -12,6 +12,7 @@ hiddenStatuses = [], hiddenRings = [], fitBoundsMaxZoom = 11, + fitBoundsPadding = null, }: { areas: WindArea[]; onselect: (area: WindArea | null, center: [number, number] | null) => void; @@ -20,6 +21,10 @@ hiddenStatuses?: string[]; hiddenRings?: string[]; fitBoundsMaxZoom?: number; + /** Wenn gesetzt: symmetrisches [x,y]-Padding für fitBounds (z.B. Mini-Map + * ohne Panel). Default null = panel-aware Padding (großer Bottom-/Side- + * Bereich für Detail-Drawer in der vollwertigen Karte). */ + fitBoundsPadding?: [number, number] | null; } = $props(); const t = useTranslate(); @@ -166,9 +171,18 @@ if (zoom && prev !== name) { const desktop = window.innerWidth >= 640; + const pad: { paddingTopLeft: [number, number]; paddingBottomRight: [number, number] } = + fitBoundsPadding + ? { + paddingTopLeft: fitBoundsPadding, + paddingBottomRight: fitBoundsPadding, + } + : { + paddingTopLeft: [40, 40], + paddingBottomRight: [desktop ? 320 : 40, desktop ? 40 : 300], + }; map!.fitBounds((layer as import("leaflet").Polygon).getBounds(), { - paddingTopLeft: [40, 40], - paddingBottomRight: [desktop ? 320 : 40, desktop ? 40 : 300], + ...pad, maxZoom: fitBoundsMaxZoom, }); } diff --git a/src/lib/components/blocks/StellingnahmeGeneratorBlock.svelte b/src/lib/components/blocks/StellingnahmeGeneratorBlock.svelte index be90139..4ad1a44 100644 --- a/src/lib/components/blocks/StellingnahmeGeneratorBlock.svelte +++ b/src/lib/components/blocks/StellingnahmeGeneratorBlock.svelte @@ -616,7 +616,7 @@ ${"=".repeat(64)}`; {#if browser && MapComponent && mapReady && mapAreaData.length > 0} -