Compare commits

6 Commits
Author SHA1 Message Date
dapelza 8dfa26468b Merge branch 'main' into ui_expirence 2026-07-28 11:14:03 +00:00
dapelzaandClaude Sonnet 5 4eb595aa81 Filter-Icon durch Aufklapp-Chevron ersetzt, Karte bei Spaltenresize neu berechnen
- Icon im eingeklappten Zustand von Lupe (wirkte wie Such-Icon) auf ein
  Chevron (◂) geändert, das klar als Aufklappen-Symbol erkennbar ist.
- ResizeObserver auf dem Kartencontainer ruft map.invalidateSize() auf,
  sobald sich dessen Größe ändert (z.B. beim Ein-/Ausklappen der
  Filter-Spalte). Ohne das blieb der neu hinzugewonnene Kartenbereich
  grau/leer, bis die Karte manuell bewegt wurde.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 12:49:53 +02:00
dapelzaandClaude Sonnet 5 3a5348830c Filter-Spalte auf Desktop beim Einklappen auf Icon schrumpfen lassen
Bisher blieb die Filter-Spalte auch bei geschlossenem <details>-Element
in voller Breite stehen, da nur der Inhalt (nicht die Grid-Spalte)
ausgeblendet wurde. Jetzt schrumpft die Spalte per :has()-Selektor auf
56px und zeigt nur noch ein Icon zum Wiederaufklappen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 12:43:01 +02:00
dapelzaandClaude Sonnet 5 dccfeddb0e Desktop-Layout: Filter & Suche rechts neben Ausflugsziele statt darüber
Schließt Issue #3 ("Übersichtlicher Gestalten"). Karte, Ausflugsziele
und Filter stehen ab 1024px jetzt in einer Zeile nebeneinander statt
Filter über der Liste. Filter & Suche bleibt über das native
<details>-Element auf-/zuklappbar, die Zwangs-Offen-Regel für Desktop
entfällt dafür.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 11:54:39 +02:00
dapelzaandClaude Sonnet 5 22e6f9df02 Weitere Ausflugsziele in Seed-Daten ergaenzt
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 11:49:57 +02:00
dapelzaandClaude Sonnet 5 e707686924 Beim Schließen der Detailansicht auf gefilterte Treffer zurückzoomen
Bisher blieb die Karte nach dem Schließen auf dem zuvor ausgewählten
Ort eingezoomt, sodass nur ein einzelner Marker sichtbar war.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 11:35:07 +02:00
5 changed files with 588 additions and 29 deletions
+26 -13
View File
@@ -1,8 +1,9 @@
/* Filter- und Suchpanel (Phase 4). Struktur wird von /* Filter- und Suchpanel (Phase 4). Struktur wird von
js/filters/filterPanel.js in #filter-panel eingehängt. js/filters/filterPanel.js in #filter-panel eingehängt.
Mobile: <details>/<summary> als einfaches, JS-freies Auf-/Zuklappen. <details>/<summary> übernimmt das Auf-/Zuklappen JS-frei - sowohl mobil
Desktop (>=1024px, siehe css/responsive.css): immer sichtbar/offen. */ (Panel oberhalb der Liste) als auch auf Desktop (>=1024px, Panel als
eigene Spalte rechts neben der Ergebnisliste, siehe css/responsive.css). */
.filter-panel { .filter-panel {
background: var(--color-surface); background: var(--color-surface);
@@ -18,6 +19,9 @@
} }
.filter-panel__summary { .filter-panel__summary {
display: flex;
align-items: center;
gap: var(--space-sm);
padding: var(--space-md) 0; padding: var(--space-md) 0;
font-weight: 700; font-weight: 700;
cursor: pointer; cursor: pointer;
@@ -36,6 +40,15 @@
content: '▾ '; content: '▾ ';
} }
/* Nur im eingeklappten Desktop-Zustand als eigenständiges Icon sichtbar
(siehe Media-Query unten) - sonst steckt das Icon unauffällig neben dem
Text, ohne das Mobile-Layout zu verändern. */
.filter-panel__summary-icon {
display: none;
font-size: 1.3rem;
line-height: 1;
}
.filter-panel__body { .filter-panel__body {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -162,22 +175,22 @@
@media (min-width: 1024px) { @media (min-width: 1024px) {
.filter-panel { .filter-panel {
border-bottom: none; border-bottom: none;
overflow-y: auto;
} }
.filter-panel__summary { /* Eingeklappt: Spalte auf Icon-Breite schrumpfen lassen (Grid-Breite
cursor: default; siehe css/responsive.css) statt nur den Inhalt zu verstecken - sonst
bleibt die leere Spalte trotzdem in voller Breite stehen. */
.filter-panel__details:not([open]) .filter-panel__summary {
justify-content: center;
padding: var(--space-md) 0;
} }
/* Details-Inhalt unabhängig vom open-Attribut immer anzeigen, damit das .filter-panel__details:not([open]) .filter-panel__summary-icon {
Panel auf Desktop nicht eingeklappt werden kann/muss (überschreibt die display: block;
UA-Default-Regel "details:not([open]) > *:not(summary){display:none}"). */
.filter-panel__body {
display: grid !important;
grid-template-columns: repeat(2, 1fr);
} }
.filter-panel__actions { .filter-panel__details:not([open]) .filter-panel__summary-text,
grid-column: 1 / -1; .filter-panel__details:not([open]) .filter-panel__summary::before {
display: none;
} }
} }
+22 -12
View File
@@ -1,34 +1,44 @@
/* Desktop-Layout ab 1024px: Karte und Liste nebeneinander (Grid). */ /* Desktop-Layout ab 1024px: Karte, Ausflugsziele und Filter nebeneinander
(Grid, eine Zeile). Filter & Suche steht rechts und bleibt über das
native <details>-Element auf-/zuklappbar (siehe css/filters.css) - so
verdrängt ein geöffneter Filter nicht mehr die Ergebnisliste nach unten. */
@media (min-width: 1024px) { @media (min-width: 1024px) {
.app-layout { .app-layout {
display: grid; display: grid;
grid-template-columns: 65% 35%; grid-template-columns: 1fr 320px 300px;
grid-template-rows: auto 1fr; grid-template-rows: 1fr;
grid-template-areas: grid-template-areas: 'map list filter';
'map filter'
'map list';
/* Höhe ergibt sich aus flex:1 auf .app-layout (siehe css/layout.css) - /* Höhe ergibt sich aus flex:1 auf .app-layout (siehe css/layout.css) -
damit passt sich die Höhe automatisch an, egal ob der Header gerade damit passt sich die Höhe automatisch an, egal ob der Header gerade
durch ein geöffnetes Menü höher ist. */ durch ein geöffnetes Menü höher ist. */
} }
/* Filter-Spalte auf Icon-Breite schrumpfen, sobald das <details>-Element
darin geschlossen ist (siehe css/filters.css) - sonst bleibt die Spalte
trotz leerem Inhalt in voller Breite stehen. */
.app-layout:has(.filter-panel__details:not([open])) {
grid-template-columns: 1fr 320px 56px;
}
.map-panel { .map-panel {
grid-area: map; grid-area: map;
height: 100%; height: 100%;
min-height: 0; min-height: 0;
} }
.filter-panel {
grid-area: filter;
border-left: 1px solid var(--color-border);
max-height: 45vh;
}
.list-panel { .list-panel {
grid-area: list; grid-area: list;
height: 100%; height: 100%;
overflow-y: auto; overflow-y: auto;
border-left: 1px solid var(--color-border); border-left: 1px solid var(--color-border);
} }
.filter-panel {
grid-area: filter;
height: 100%;
overflow-y: auto;
overflow-x: hidden;
border-left: 1px solid var(--color-border);
}
} }
+520
View File
@@ -1256,5 +1256,525 @@ EventMap.data.SEED_PLACES = [
"sourceVerified": false, "sourceVerified": false,
"createdAt": "2026-07-28T07:11:32.156Z", "createdAt": "2026-07-28T07:11:32.156Z",
"updatedAt": "2026-07-28T07:11:32.156Z" "updatedAt": "2026-07-28T07:11:32.156Z"
},
{
"id": "162da2cb-3156-45e5-8b83-16b02c313628",
"name": "Marienbrücke",
"category": "aussichtspunkt",
"shortDescription": "Berühmte Fußgängerbrücke mit spektakulärem Blick auf Schloss Neuschwanstein.",
"description": "Die Marienbrücke überspannt die Pöllatschlucht und bietet den ikonischen Postkartenblick auf Schloss Neuschwanstein. Der kurze, gut ausgebaute Wanderweg vom Schloss aus ist für Familien mit älteren Kindern gut machbar; für Kinderwagen ist der Weg nur eingeschränkt geeignet. An sonnigen Tagen kann es sehr voll werden. Genaue Öffnungszeiten und Zugangsregelungen können sich ändern Angabe ungeprüft.",
"latitude": 47.55757,
"longitude": 10.74714,
"address": "Nahe Neuschwansteinstraße",
"city": "Schwangau",
"region": "Bayern, Deutschland",
"ageRecommendation": { "min": 5, "max": 14 },
"cost": { "type": "free", "description": "Zugang zur Brücke kostenlos, Schlossbesuch kostenpflichtig (Angabe ungeprüft)" },
"openingHours": "Ganzjährig zugänglich, saisonal witterungsabhängig gesperrt (Angabe ungeprüft)",
"durationMinutes": 60,
"facilities": { "strollerAccessible": false, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "Aussicht", "Schloss", "Wandern"],
"source": "",
"sourceVerified": false,
"createdAt": "2026-07-28T07:56:47.175Z",
"updatedAt": "2026-07-28T07:56:47.175Z"
},
{
"id": "c2243517-30cb-4b43-b2d2-eb084c9d68a8",
"name": "Tegelberg Bergstation Tegelbergbahn",
"category": "aussichtspunkt",
"shortDescription": "Panoramablick über das Alpenvorland, erreichbar per Seilbahn.",
"description": "Die Tegelbergbahn bringt Familien bequem von Schwangau auf den Tegelberg, wo ein weites Panorama über Forggensee, Alpsee und die umgebenden Alpen wartet. Oben gibt es Wanderwege unterschiedlicher Schwierigkeit sowie eine Gastronomie. Auch Startplatz für Paragleiter. Genaue Fahrzeiten, Preise und Wetterabhängigkeit bitte vor Anfahrt prüfen Angabe ungeprüft.",
"latitude": 47.558,
"longitude": 10.6919,
"address": "Tegelbergstraße",
"city": "Schwangau",
"region": "Bayern, Deutschland",
"ageRecommendation": { "min": 2, "max": 14 },
"cost": { "type": "paid", "description": "Seilbahnfahrt kostenpflichtig, genauer Preis ungeprüft" },
"openingHours": "Saisonal geöffnet, genaue Zeiten ungeprüft",
"durationMinutes": 150,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": true, "toilets": true, "parking": true, "restaurant": true },
"environment": "outdoor",
"website": "",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "Aussicht", "Seilbahn", "Berge"],
"source": "",
"sourceVerified": false,
"createdAt": "2026-07-28T07:56:47.176Z",
"updatedAt": "2026-07-28T07:56:47.176Z"
},
{
"id": "ccd74f96-4795-4d6b-861d-a7a3864dc22c",
"name": "Kletterwald Tegelberg",
"category": "kletterpark",
"shortDescription": "Hochseilgarten im Wald an der Talstation der Tegelbergbahn.",
"description": "Der Kletterwald am Tegelberg bietet mehrere Parcours mit unterschiedlichem Schwierigkeitsgrad zwischen den Bäumen, darunter auch niedrigere Kinderparcours. Er liegt nahe der Talstation der Tegelbergbahn und ist ein beliebtes Ausflugsziel für aktive Familien. Genaue Mindestgrößen/-alter, Preise und Öffnungszeiten sollten vor dem Besuch geprüft werden Angabe ungeprüft.",
"latitude": 47.5765,
"longitude": 10.7266,
"address": "Tegelbergstraße",
"city": "Schwangau",
"region": "Bayern, Deutschland",
"ageRecommendation": { "min": 5, "max": 14 },
"cost": { "type": "paid", "description": "Eintritt/Parcours kostenpflichtig, genauer Preis ungeprüft" },
"openingHours": "Saisonal geöffnet, genaue Zeiten ungeprüft",
"durationMinutes": 150,
"facilities": { "strollerAccessible": false, "wheelchairAccessible": false, "toilets": true, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "Klettern", "Hochseilgarten", "Wald"],
"source": "",
"sourceVerified": false,
"createdAt": "2026-07-28T07:56:47.176Z",
"updatedAt": "2026-07-28T07:56:47.176Z"
},
{
"id": "bfb0069f-a0ba-4e26-b654-ff22b354203e",
"name": "Ruine Falkenstein",
"category": "aussichtspunkt",
"shortDescription": "Höchstgelegene Burgruine Deutschlands mit weitem Alpenblick.",
"description": "Die Ruine Falkenstein bei Pfronten gilt als höchstgelegene Burgruine Deutschlands. Ein Wanderweg führt hinauf zu den Resten der Burg mit beeindruckendem Blick über das Alpenvorland, den Alpsee und die umliegenden Berge. Der Aufstieg ist streckenweise steil, daher eher für ältere Kinder geeignet. Genaue Wegzeiten und Beschaffenheit bitte vor Ort prüfen Angabe ungeprüft.",
"latitude": 47.5931,
"longitude": 10.6297,
"address": "Falkenstein",
"city": "Pfronten",
"region": "Bayern, Deutschland",
"ageRecommendation": { "min": 6, "max": 14 },
"cost": { "type": "free", "description": "Zugang kostenlos (Angabe ungeprüft)" },
"openingHours": "Frei zugänglich, keine festen Öffnungszeiten (Angabe ungeprüft)",
"durationMinutes": 120,
"facilities": { "strollerAccessible": false, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "Aussicht", "Wandern", "Burgruine"],
"source": "",
"sourceVerified": false,
"createdAt": "2026-07-28T07:56:47.176Z",
"updatedAt": "2026-07-28T07:56:47.176Z"
},
{
"id": "fb8c4a8f-2b73-4d98-a40c-1fd58cd4b2e5",
"name": "Highline179",
"category": "aussichtspunkt",
"shortDescription": "Spektakuläre Hängebrücke zwischen zwei Burgruinen mit Panoramablick.",
"description": "Die Highline179 ist eine der längsten Fußgänger-Hängebrücken der Welt und verbindet die Burgruinen Ehrenberg und Fort Claudia bei Reutte. Sie bietet einen beeindruckenden Blick ins Tal und auf die umliegenden Berge. Für Kinder ist die Überquerung ein besonderes Erlebnis, kann durch Höhe und leichtes Schwingen der Brücke aber auch aufregend/herausfordernd sein. Genaue Preise und Öffnungszeiten bitte vor Anfahrt prüfen Angabe ungeprüft.",
"latitude": 47.4864,
"longitude": 10.7206,
"address": "Ehrenberg",
"city": "Reutte",
"region": "Tirol, Österreich",
"ageRecommendation": { "min": 6, "max": 14 },
"cost": { "type": "paid", "description": "Eintritt kostenpflichtig, genauer Preis ungeprüft" },
"openingHours": "Saisonal geöffnet, genaue Zeiten ungeprüft",
"durationMinutes": 90,
"facilities": { "strollerAccessible": false, "wheelchairAccessible": false, "toilets": true, "parking": true, "restaurant": true },
"environment": "outdoor",
"website": "",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "Aussicht", "Hängebrücke", "Burgruine"],
"source": "",
"sourceVerified": false,
"createdAt": "2026-07-28T07:56:47.176Z",
"updatedAt": "2026-07-28T07:56:47.176Z"
},
{
"id": "c0a80a45-7eb2-4034-bee9-bea8ace2dd73",
"name": "Skywalk Alpspitzbahn Nesselwang",
"category": "aussichtspunkt",
"shortDescription": "Aussichtsplattform an der Bergstation der Alpspitzbahn mit Blick über das Allgäu.",
"description": "An der Bergstation der Alpspitzbahn in Nesselwang befindet sich eine moderne Aussichtsplattform, die einen weiten Blick über das Allgäuer Alpenvorland ermöglicht. Die Auffahrt erfolgt bequem per Seilbahn, wodurch das Ziel auch für kleinere Kinder gut erreichbar ist. Genaue Öffnungszeiten, Details zur Plattform und Preise sollten vor dem Besuch geprüft werden Angabe ungeprüft.",
"latitude": 47.608,
"longitude": 10.519,
"address": "Alpspitzbahn",
"city": "Nesselwang",
"region": "Bayern, Deutschland",
"ageRecommendation": { "min": 2, "max": 14 },
"cost": { "type": "paid", "description": "Seilbahnfahrt kostenpflichtig, genauer Preis ungeprüft" },
"openingHours": "Saisonal geöffnet, genaue Zeiten ungeprüft",
"durationMinutes": 120,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": true, "toilets": true, "parking": true, "restaurant": true },
"environment": "outdoor",
"website": "",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "Aussicht", "Seilbahn"],
"source": "",
"sourceVerified": false,
"createdAt": "2026-07-28T07:56:47.176Z",
"updatedAt": "2026-07-28T07:56:47.176Z"
},
{
"id": "bf9eb9b9-3d7e-4747-8108-df5f8c679674",
"name": "Spielplatz am Forggensee (Faulensee)",
"category": "spielplatz",
"shortDescription": "Spielplatz in der Naherholungsanlage am Forggenseeufer bei Füssen.",
"description": "Am Ufer des Forggensees in der Nähe von Füssen befindet sich ein beliebter Spielplatz innerhalb einer Liegewiesen- und Freizeitanlage. Die Lage direkt am See macht ihn zu einem angenehmen Ausflugsziel für Familien im Sommer. Genaue Ausstattung, Öffnungszeiten und exakte Lage bitte vor Ort prüfen Angabe ungeprüft.",
"latitude": 47.579,
"longitude": 10.696,
"address": "Forggenseeufer",
"city": "Füssen",
"region": "Bayern, Deutschland",
"ageRecommendation": { "min": 1, "max": 10 },
"cost": { "type": "free", "description": "Kostenlos zugänglich (Angabe ungeprüft)" },
"openingHours": "Ganzjährig frei zugänglich (Angabe ungeprüft)",
"durationMinutes": 90,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "See"],
"source": "",
"sourceVerified": false,
"createdAt": "2026-07-28T07:56:47.176Z",
"updatedAt": "2026-07-28T07:56:47.176Z"
},
{
"id": "ce4f4d8a-9f47-4106-b7ae-733fd41976f1",
"name": "Spielplatz Uferpromenade Hopfensee",
"category": "spielplatz",
"shortDescription": "Kinderspielplatz an der Uferpromenade des Hopfensees.",
"description": "Entlang der Uferpromenade von Hopfen am See gibt es einen Spielplatz, der sich gut mit einem Spaziergang oder Badetag am Hopfensee kombinieren lässt. Blick auf die Allgäuer Alpen inklusive. Genaue Ausstattung und exakte Lage bitte vor Ort prüfen Angabe ungeprüft.",
"latitude": 47.606,
"longitude": 10.688,
"address": "Uferpromenade",
"city": "Hopfen am See",
"region": "Bayern, Deutschland",
"ageRecommendation": { "min": 1, "max": 10 },
"cost": { "type": "free", "description": "Kostenlos zugänglich (Angabe ungeprüft)" },
"openingHours": "Ganzjährig frei zugänglich (Angabe ungeprüft)",
"durationMinutes": 90,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": true },
"environment": "outdoor",
"website": "",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "See"],
"source": "",
"sourceVerified": false,
"createdAt": "2026-07-28T07:56:47.176Z",
"updatedAt": "2026-07-28T07:56:47.176Z"
},
{
"id": "8f5b95f5-0dfd-45d6-8ced-7586e1b2711f",
"name": "Spielplatz Künettegraben",
"category": "spielplatz",
"shortDescription": "Schattiger Spielplatz im Glacis mit Wasser- und Matschbereich.",
"description": "Der Spielplatz liegt im Festungspark Glacis an der Westlichen Ringstraße. Beschrieben sind ein Wasser- und Matschbereich, Klettergeräte mit Rutsche, Sandfläche, Basketballkorb, Tischtennisplatte, viele alte Bäume, Schatten und Sitzbänke. Angabe zu einzelnen Ausstattungsmerkmalen ungeprüft.",
"latitude": 48.759564,
"longitude": 11.418713,
"address": "Westliche Ringstraße 29",
"city": "Ingolstadt",
"region": "Ingolstadt",
"ageRecommendation": { "min": 0, "max": 14 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Öffentliche Außenanlage; genaue Nutzungszeiten Angabe ungeprüft",
"durationMinutes": 90,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://www.spielplatztreff.de/spielplatz/spielplatz-kuenettegraben-in-ingolstadt_5700",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "Wasserspielplatz", "Schatten"],
"source": "https://www.spielplatztreff.de/spielplatz/spielplatz-kuenettegraben-in-ingolstadt_5700; https://de.maptons.com/p/3130289674",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:36.297Z",
"updatedAt": "2026-07-28T09:45:36.297Z"
},
{
"id": "842e473e-c2ed-48f3-a56e-0bcf027dd311",
"name": "Spielplatz Am Regenbogen im Klenzepark",
"category": "spielplatz",
"shortDescription": "Fantasievoller Spielplatz im Grünen mit Klettertürmen und Sandbereich.",
"description": "Der Spielplatz im Klenzepark wird als fantasievoll gestalteter Spielplatz mit Klettertürmen, Klettergerät mit Rutsche, Röhrenrutsche, Sandfläche, Balancier-Elementen, Schatten und Sitzbänken beschrieben. Für Kinderwagen und Rollstuhl wird die Zugänglichkeit angegeben. Angabe zu Öffnungszeiten ungeprüft.",
"latitude": 48.76123,
"longitude": 11.433944,
"address": "Regimentstraße 26",
"city": "Ingolstadt",
"region": "Ingolstadt",
"ageRecommendation": { "min": 2, "max": 12 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Öffentliche Außenanlage; genaue Nutzungszeiten Angabe ungeprüft",
"durationMinutes": 90,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": true, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://www.spielplatztreff.de/spielplatz/spielplatz-am-regenbogen-im-klenzepark-in-ingolstadt_5696",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "Kletterspielplatz", "Klenzepark"],
"source": "https://www.spielplatztreff.de/spielplatz/spielplatz-am-regenbogen-im-klenzepark-in-ingolstadt_5696",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:36.298Z",
"updatedAt": "2026-07-28T09:45:36.298Z"
},
{
"id": "abf97f6d-4d1f-44ba-a5c8-8887a11f25b1",
"name": "Spielpark Donaustrand",
"category": "spielplatz",
"shortDescription": "Großer Spiel- und Erlebnisbereich an der Donau mit Kletterwald und Spielschiff.",
"description": "Der Spielpark Donaustrand liegt südlich der Gerhart-Hauptmann-Straße. Beschrieben sind Kletterwald, Spielturm, Riesen-Doppelschaukel, Bolzplatz, Bewegungsparcours, Beachvolleyballfeld, Sitzmöglichkeiten und seit 2023 ein Spielschiff für kleinere Kinder. Angabe zu einzelnen Ausstattungsmerkmalen ungeprüft.",
"latitude": 48.765285,
"longitude": 11.448318,
"address": "Gerhart-Hauptmann-Straße 39",
"city": "Ingolstadt",
"region": "Ingolstadt",
"ageRecommendation": { "min": 2, "max": 14 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Öffentliche Außenanlage; genaue Nutzungszeiten Angabe ungeprüft",
"durationMinutes": 120,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://www.ingolstadt.de/Rathaus/Aktuelles/Meldungs-Archiv/Spielpark-Donaustrand-im-Konradviertel.php?object=tx,2789.5.1&ModID=7&FID=2789.6159.1&NavID=2789.737&La=1",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "Kletterwald", "Donau"],
"source": "https://www.ingolstadt.de/Rathaus/Aktuelles/Meldungs-Archiv/Spielpark-Donaustrand-im-Konradviertel.php?object=tx,2789.5.1&ModID=7&FID=2789.6159.1&NavID=2789.737&La=1; https://de.maptons.com/p/2870483018",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:36.298Z",
"updatedAt": "2026-07-28T09:45:36.298Z"
},
{
"id": "101a52e5-1ffb-49b8-b83e-5cbb286273c9",
"name": "Wasserspielplatz Donauwurm",
"category": "spielplatz",
"shortDescription": "Wasserspielplatz am Baggersee mit Sandbuchten, Pumpen und Wasserläufen.",
"description": "Der Donauwurm liegt am Baggersee und wird als Wasserspielplatz mit Sand, Liegewiese, Sitz- und Picknickmöglichkeiten sowie einer Umkleidekabine beschrieben. Genannt werden Handpumpen, Stauwehre, Wasserräder, Wasserläufe, flache Sandbuchten im Nichtschwimmerbereich und ein Hinweis, dass es keine Badeaufsicht gibt. Angabe zu Öffnungszeiten ungeprüft.",
"latitude": 48.750797,
"longitude": 11.400205,
"address": "Mitterschüttweg 5",
"city": "Ingolstadt",
"region": "Ingolstadt",
"ageRecommendation": { "min": 0, "max": 12 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Öffentliche Außenanlage; genaue Nutzungszeiten Angabe ungeprüft",
"durationMinutes": 120,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": true },
"environment": "outdoor",
"website": "https://www.spielplatztreff.de/spielplatz/spielplatz-donauwurm-in-ingolstadt_24890",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "Wasserspielplatz", "Baggersee"],
"source": "https://www.spielplatztreff.de/spielplatz/spielplatz-donauwurm-in-ingolstadt_24890; https://wie.de/poi/wasserspielplatz-donauwurm.475505269",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:36.298Z",
"updatedAt": "2026-07-28T09:45:36.298Z"
},
{
"id": "2c049c0a-1978-48ca-b8be-b39166c6a68a",
"name": "Spielplatz Herzogsgarten",
"category": "spielplatz",
"shortDescription": "Kleiner, eingezäunter Spielplatz in der Innenstadt nahe Stadttheater.",
"description": "Der Spielplatz Herzogsgarten wird als kleiner Spielplatz direkt am Marktplatz beziehungsweise Stadttheater beschrieben. Genannt werden Einzäunung, Schatten, Sitzbänke, Toiletten, Klettergerät mit Rutsche, Spielhaus und Sandfläche. Die Quellen geben unterschiedliche Detailtiefen an; einzelne Angaben ungeprüft.",
"latitude": 48.763573,
"longitude": 11.428168,
"address": "Hallstraße 4",
"city": "Ingolstadt",
"region": "Ingolstadt",
"ageRecommendation": { "min": 0, "max": 6 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Täglich von 08:00 bis 22:00 Uhr",
"durationMinutes": 60,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": true, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://www.spielplatztreff.de/spielplatz/herzogsgarten-in-ingolstadt_16936",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "Innenstadt", "eingezäunt"],
"source": "https://www.spielplatztreff.de/spielplatz/herzogsgarten-in-ingolstadt_16936; https://mapcarta.com/de/W308038834",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:36.298Z",
"updatedAt": "2026-07-28T09:45:36.298Z"
},
{
"id": "bc2b6fd2-24a2-4eab-a673-7f7ee510e66c",
"name": "Spielplatz Esplanade",
"category": "spielplatz",
"shortDescription": "Ruhiger, schattiger Spielplatz in Innenstadtnähe.",
"description": "Der Spielplatz Esplanade wird als schattiger, ruhiger Spielplatz mit Bänken und Klettergerüst beschrieben. Genannt werden Klettergerät mit Rutsche, Spielhaus, Schaukel, Karussell, Wackelbrücke, Sandfläche, Hängematte und Reckstange. Die Adressangaben der Quellen weichen leicht voneinander ab; Angabe ungeprüft.",
"latitude": 48.7681,
"longitude": 11.428061,
"address": "Esplanade 19A",
"city": "Ingolstadt",
"region": "Ingolstadt",
"ageRecommendation": { "min": 2, "max": 12 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Täglich von 08:00 bis 22:00 Uhr",
"durationMinutes": 75,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://www.spielplatztreff.de/spielplatz/esplanade-in-ingolstadt_12841",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "Schatten", "Innenstadtnähe"],
"source": "https://www.spielplatztreff.de/spielplatz/esplanade-in-ingolstadt_12841; https://mapcarta.com/de/W226811747",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:36.298Z",
"updatedAt": "2026-07-28T09:45:36.298Z"
},
{
"id": "426efd34-1513-4320-ad13-32f710d057b5",
"name": "Spielplatz Adolf-Kolping-Straße",
"category": "spielplatz",
"shortDescription": "Kleiner Stadtspielplatz mit Sandkasten und Spielgeräten.",
"description": "Der Spielplatz an der Adolf-Kolping-Straße wird als ruhiges Stadtplätzchen mit Sandkasten, Sandbagger, Dreh-Element und Karussell beschrieben. Er eignet sich vor allem für einen kurzen Zwischenstopp mit kleineren Kindern. Adressangaben unterscheiden sich je nach Quelle; Angabe ungeprüft.",
"latitude": 48.76599,
"longitude": 11.42534,
"address": "Adolf-Kolping-Straße 10",
"city": "Ingolstadt",
"region": "Ingolstadt",
"ageRecommendation": { "min": 2, "max": 6 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Öffentliche Außenanlage; genaue Nutzungszeiten Angabe ungeprüft",
"durationMinutes": 45,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://www.spielplatztreff.de/spielplatz/adolf-kolping-strasse-in-ingolstadt_14434",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "Sandkasten", "Innenstadt"],
"source": "https://www.spielplatztreff.de/spielplatz/adolf-kolping-strasse-in-ingolstadt_14434; https://mapcarta.com/de/W775667734",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:36.298Z",
"updatedAt": "2026-07-28T09:45:36.298Z"
},
{
"id": "278715b6-cc15-41f7-8a76-e855536ea00d",
"name": "Spielplatz Piustreff",
"category": "spielplatz",
"shortDescription": "Spielplatz und Streetballplatz im Piusviertel.",
"description": "Der Spielplatz Piustreff wird als Spielplatz mit Streetballplatz und Bolzplatz beschrieben. Weitere Quellen nennen den Spielplatz im Piusviertel als Ort für Kinder und Familien. Angabe zu einzelnen Ausstattungsmerkmalen ungeprüft.",
"latitude": 48.779762,
"longitude": 11.402562,
"address": "Waldeysenstraße 81",
"city": "Ingolstadt",
"region": "Ingolstadt",
"ageRecommendation": { "min": 3, "max": 16 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Täglich von 08:00 bis 22:00 Uhr",
"durationMinutes": 75,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://spielplatznet.de/spielplatz/9412/Ingolstadt/Piustreff",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "Bolzplatz", "Streetball"],
"source": "https://spielplatznet.de/spielplatz/9412/Ingolstadt/Piustreff; https://www.schule-und-spass.de/bayern/ingolstadt/spielplatz/spielplatz-piustreff",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:36.298Z",
"updatedAt": "2026-07-28T09:45:36.298Z"
},
{
"id": "7215d3c1-d0dc-4b5d-ad0c-50c248800faa",
"name": "Spielpark Fort Peyerl",
"category": "spielplatz",
"shortDescription": "Großer Spielpark in Haunwöhr mit Kletter-, Ball- und Sportangeboten.",
"description": "Der Spielpark Fort Peyerl liegt im Süden von Haunwöhr auf dem Areal eines ehemaligen Vorwerks. Beschrieben sind vielfältige Spielmöglichkeiten für alle Altersgruppen, Federwippen, Schaukel, Spielkombination mit Rutschbahn und Klettergerüst, Tischtennisplatten, zwei Bolzplätze, Torwand, Skateanlage, Sitzbänke und Grillplatz im Sommer. Die genaue Spielplatz-Koordinate ist aus Quellen abgeleitet; Angabe ungeprüft.",
"latitude": 48.73627,
"longitude": 11.41111,
"address": "Görresstraße / Johanniterstraße",
"city": "Ingolstadt",
"region": "Ingolstadt",
"ageRecommendation": { "min": 0, "max": 14 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Öffentliche Außenanlage; genaue Nutzungszeiten Angabe ungeprüft",
"durationMinutes": 120,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://www.ingolstadt.de/index.phtml?La=1&object=tx,465.770.1",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "kostenlos", "Spielplatz", "Spielpark", "Bolzplatz"],
"source": "https://www.ingolstadt.de/index.phtml?La=1&object=tx,465.770.1; https://mapcarta.com/de/W32296711; https://www.spielplatztreff.de/spielplatz/spielpark-fort-peyerl-in-ingolstadt_6788",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:36.298Z",
"updatedAt": "2026-07-28T09:45:36.298Z"
},
{
"id": "bd235b18-64db-47f3-b1c3-91bdcbbeb3ad",
"name": "Spielpark Nordwest",
"category": "spielplatz",
"shortDescription": "Großer Spiel- und Bewegungspark westlich des Piusviertels.",
"description": "Großzügiger Spielpark mit Seilbahn, Skaterbereich, Rodelhügel, Ballsportflächen, Liegewiesen und Aufenthaltsbereichen für verschiedene Altersgruppen. Von der Stadt Ingolstadt als zentraler Spielpark des Nordwestens beschrieben. Angabe ungeprüft bezüglich einzelner Ausstattungsdetails.",
"latitude": 48.7808,
"longitude": 11.3949,
"address": "Permoserstraße",
"city": "Ingolstadt",
"region": "Westpark Ingolstadt",
"ageRecommendation": { "min": 2, "max": 16 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Öffentliche Außenanlage; genaue Nutzungszeiten nicht angegeben",
"durationMinutes": 120,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://www.ingolstadt.de/Rathaus/Stadtgarten/Spiel-Bewegung/",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "Spielplatz", "Spielpark", "kostenlos"],
"source": "https://www.ingolstadt.de/Rathaus/Stadtgarten/Spiel-Bewegung/",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:47.282Z",
"updatedAt": "2026-07-28T09:45:47.282Z"
},
{
"id": "bec61e2c-cb65-43c6-836b-ed71d5bf36d1",
"name": "Baggersee Ingolstadt",
"category": "see-badestelle",
"shortDescription": "Großes Naherholungsgebiet mit Badebereichen, Wegen und Familienangeboten.",
"description": "Beliebtes Naherholungsgebiet mit Bademöglichkeiten, Spazierwegen und familienfreundlicher Infrastruktur. Der Wasserspielplatz Donauwurm liegt direkt am See. Angaben zu einzelnen Einrichtungen ungeprüft.",
"latitude": 48.7513,
"longitude": 11.4019,
"address": "Mitterschüttweg",
"city": "Ingolstadt",
"region": "Westpark Ingolstadt",
"ageRecommendation": { "min": 0, "max": 99 },
"cost": { "type": "free", "description": "Öffentlich zugänglich" },
"openingHours": "Ganzjährig zugänglich",
"durationMinutes": 180,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": true, "parking": true, "restaurant": true },
"environment": "outdoor",
"website": "https://bayern-online.de/ingolstadt/erleben/natur/gewaesser/baggersee/",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "See", "Badestelle", "Naherholung"],
"source": "https://bayern-online.de/ingolstadt/erleben/natur/gewaesser/baggersee/",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:47.283Z",
"updatedAt": "2026-07-28T09:45:47.283Z"
},
{
"id": "a6246398-ba62-464e-9af7-c6f73a663b49",
"name": "Spielplatz Baggersee Wildpark",
"category": "spielplatz",
"shortDescription": "Spielplatz nahe Wildpark und Baggersee.",
"description": "Spielplatz in unmittelbarer Nähe des Baggersees und des Wildparkbereichs. Gut mit einem Ausflug zum Naherholungsgebiet kombinierbar. Einzelne Ausstattungsmerkmale nicht verifiziert.",
"latitude": 48.7486,
"longitude": 11.3973,
"address": "Aloisiweg",
"city": "Ingolstadt",
"region": "Westpark Ingolstadt",
"ageRecommendation": { "min": 2, "max": 12 },
"cost": { "type": "free", "description": "Kostenlos" },
"openingHours": "Öffentliche Außenanlage",
"durationMinutes": 60,
"facilities": { "strollerAccessible": true, "wheelchairAccessible": false, "toilets": false, "parking": true, "restaurant": false },
"environment": "outdoor",
"website": "https://www.spielplatztreff.de/spielplatz/baggersee-wildpark-in-ingolstadt_13932",
"image": "",
"rating": null,
"tags": ["familienfreundlich", "Spielplatz", "Baggersee", "kostenlos"],
"source": "https://www.spielplatztreff.de/spielplatz/baggersee-wildpark-in-ingolstadt_13932",
"sourceVerified": false,
"createdAt": "2026-07-28T09:45:47.283Z",
"updatedAt": "2026-07-28T09:45:47.283Z"
} }
]; ];
+9 -4
View File
@@ -316,12 +316,17 @@
el('div', { className: 'filter-panel__actions' }, [refs.countDisplay, refs.resetBtn, refs.zoomToResultsBtn]), el('div', { className: 'filter-panel__actions' }, [refs.countDisplay, refs.resetBtn, refs.zoomToResultsBtn]),
]); ]);
refs.details = el( const summary = el(
'details', 'summary',
{ className: 'filter-panel__details' }, { className: 'filter-panel__summary', attrs: { 'aria-label': 'Filter & Suche ein-/ausblenden' } },
[el('summary', { className: 'filter-panel__summary', text: 'Filter & Suche' }), body] [
el('span', { className: 'filter-panel__summary-icon', attrs: { 'aria-hidden': 'true' }, text: '◂' }),
el('span', { className: 'filter-panel__summary-text', text: 'Filter & Suche' }),
]
); );
refs.details = el('details', { className: 'filter-panel__details' }, [summary, body]);
clearChildren(rootContainer); clearChildren(rootContainer);
rootContainer.appendChild(refs.details); rootContainer.appendChild(refs.details);
} }
+11
View File
@@ -172,6 +172,15 @@
}); });
L.control.zoom({ position: 'topright' }).addTo(map); L.control.zoom({ position: 'topright' }).addTo(map);
// Leaflet merkt Größenänderungen seines Containers nicht selbst (z.B.
// wenn die Filter-Spalte auf Desktop ein-/ausklappt und dadurch die
// Kartenspalte breiter/schmaler wird) - ohne invalidateSize() bleibt der
// neu hinzugewonnene Bereich grau/leer, bis man die Karte anfasst.
if (typeof ResizeObserver !== 'undefined') {
const resizeObserver = new ResizeObserver(() => map.invalidateSize());
resizeObserver.observe(map.getContainer());
}
// tile.openstreetmap.org verlangt seit 2024 einen gültigen HTTP-Referer // tile.openstreetmap.org verlangt seit 2024 einen gültigen HTTP-Referer
// (Tile Usage Policy). Seiten, die per file:// geöffnet werden, senden // (Tile Usage Policy). Seiten, die per file:// geöffnet werden, senden
// browserseitig grundsätzlich keinen Referer mit ("Access blocked: Referer // browserseitig grundsätzlich keinen Referer mit ("Access blocked: Referer
@@ -212,6 +221,8 @@
lastSelectedPlaceId = state.selectedPlaceId; lastSelectedPlaceId = state.selectedPlaceId;
if (state.selectedPlaceId) { if (state.selectedPlaceId) {
centerOnPlace(state.selectedPlaceId); centerOnPlace(state.selectedPlaceId);
} else {
fitToPlaces(filtered);
} }
} }