30k Einwohner mit KI-Bildern + Fakten + Wiki * - 14 Berggipfel mit Daten + Wiki * - 25 Mission-Zielmarker (rot, mit ID-Badge) — Spiegel zu ALL_MISSIONS * - Filter-Pills: Alles / Stuetzpunkte / Staedte / Berge / Missionen * * Das war frueher unter /heli.html (V1) und ist jetzt unter /heli-uebersicht. */ require_once __DIR__ . '/../php/config/app.php'; require_once __DIR__ . '/../php/config/db.php'; $db = getDB(); // === Mission-Marker aus den 25 Missionen (Spiegel zu ALL_MISSIONS) === $missions = [ ['id'=>'m1', 'title'=>'Skiunfall Damüls', 'target'=>'bergrettung_muels', 'icon'=>'⛷️'], ['id'=>'m2', 'title'=>'Verkehrsunfall A14', 'target'=>'verkehr_a14', 'icon'=>'🚗'], ['id'=>'m3', 'title'=>'Bergrettung Brand', 'target'=>'brand', 'icon'=>'🧗'], ['id'=>'m4', 'title'=>'Skiunfall Sölden', 'target'=>'skiunfall_soelden', 'icon'=>'⛷️'], ['id'=>'m5', 'title'=>'Seerettung Bregenz', 'target'=>'bregenz', 'icon'=>'🌊'], ['id'=>'m6', 'title'=>'Canyoning Mellau', 'target'=>'mellau', 'icon'=>'🏞️'], ['id'=>'m7', 'title'=>'Wanderunfall Kufstein', 'target'=>'kufstein', 'icon'=>'🥾'], ['id'=>'m8', 'title'=>'Notfall Gaschurn', 'target'=>'gaschurn', 'icon'=>'🚑'], ['id'=>'m9', 'title'=>'Lawineneinsatz Mayrhofen', 'target'=>'mayrhofen', 'icon'=>'❄️'], ['id'=>'m10', 'title'=>'Verkehrsunfall A2 Baden', 'target'=>'verkehr_a2_baden', 'icon'=>'🚗'], ['id'=>'m11', 'title'=>'Sog in der Neuen Donau', 'target'=>'see_donau_wien', 'icon'=>'🌊'], ['id'=>'m12', 'title'=>'Kletterunfall Schneeberg', 'target'=>'berg_schneeberg', 'icon'=>'🧗'], ['id'=>'m13', 'title'=>'Wanderunfall Rax', 'target'=>'berg_rax', 'icon'=>'🥾'], ['id'=>'m14', 'title'=>'Surfer Neusiedler See', 'target'=>'see_neusiedl', 'icon'=>'🌊'], ['id'=>'m15', 'title'=>'Verkehrsunfall A1 Sattledt','target'=>'verkehr_a1_sattledt', 'icon'=>'🚗'], ['id'=>'m16', 'title'=>'Boot in Not Traunsee', 'target'=>'see_traun', 'icon'=>'🌊'], ['id'=>'m17', 'title'=>'LKW-Unfall A10 Tauern', 'target'=>'verkehr_a10_tauern', 'icon'=>'🚗'], ['id'=>'m18', 'title'=>'Seerettung Wolfgangsee', 'target'=>'see_wolfgang', 'icon'=>'🌊'], ['id'=>'m19', 'title'=>'Absturz Großglockner', 'target'=>'berg_glockner', 'icon'=>'❄️'], ['id'=>'m20', 'title'=>'Dachstein Südwand', 'target'=>'berg_dachstein', 'icon'=>'❄️'], ['id'=>'m21', 'title'=>'Alpinunfall Hochschwab', 'target'=>'berg_hochschwab', 'icon'=>'🧗'], ['id'=>'m22', 'title'=>'Unfall A9 Bosruck', 'target'=>'verkehr_a9_pyhrn', 'icon'=>'🚗'], ['id'=>'m23', 'title'=>'Badegast Wörthersee', 'target'=>'see_woerth', 'icon'=>'🌊'], ['id'=>'m24', 'title'=>'Glockner Südseite', 'target'=>'berg_glockner', 'icon'=>'❄️'], ['id'=>'m25', 'title'=>'Unfall A2 Klagenfurt', 'target'=>'verkehr_a2_klagenfurt', 'icon'=>'🚗'], ]; // Mission-Wegpunkt-Koordinaten aus DB ziehen (target → wp_key → lat/lon) $wpRows = $db->query("SELECT wp_key, name, lat, lon, region FROM geo_waypoints")->fetchAll(PDO::FETCH_ASSOC); $wpByKey = []; foreach ($wpRows as $w) $wpByKey[$w['wp_key']] = $w; $missionMarkers = []; foreach ($missions as $m) { if (!isset($wpByKey[$m['target']])) continue; $wp = $wpByKey[$m['target']]; $missionMarkers[] = [ 'id' => $m['id'], 'title' => $m['title'], 'icon' => $m['icon'], 'lat' => (float)$wp['lat'], 'lon' => (float)$wp['lon'], 'wpName' => $wp['name'], 'region' => $wp['region'], ]; } $mmJson = json_encode($missionMarkers, JSON_UNESCAPED_UNICODE); $base = BASE_PATH; // === Bild-Pfad-Aufloesung mit Fallback-Kette === // Server-seitig pruefen wir pro Asset den ersten existierenden Pfad. $appRoot = realpath(__DIR__ . '/..'); function firstExisting(array $relPaths, string $appRoot): string { foreach ($relPaths as $rel) { if (file_exists($appRoot . '/' . $rel)) return $rel; } return $relPaths[0]; // Letzter Fallback (existiert evtl. nicht, aber Browser meldet 404) } $cityKeys = ['wien','graz','linz','salzburg','innsbruck','klagenfurt','villach','wels','stpoelten','dornbirn','wiener_neustadt','steyr','feldkirch','bregenz','leoben','eisenstadt']; $cityImg = []; foreach ($cityKeys as $k) { $cityImg[$k] = firstExisting([ "sims/heli/assets/cities-panorama/$k.png", // 1. Neue Heli-Panoramen (Stil + Wahrzeichen) "sims/logistik/assets/cities/$k.png", // 2. Logistik-Panoramen (4 Treffer: wien/graz/salzburg/innsbruck) "sims/heli/assets/cities/$k.png", // 3. Alte Kreis-Bilder (Fallback) ], $appRoot); } $heliKeys = ['heli-ec135','heli-h145','heli-aw169','heli-ab212']; $heliImg = []; foreach ($heliKeys as $k) { $heliImg[$k] = firstExisting([ "sims/heli/assets/helis-new/$k.png", // 1. Neue typgetreue Bilder "sims/heli/assets/$k.png", // 2. Alte Bilder ], $appRoot); } $cityImgJson = json_encode($cityImg); $heliImgJson = json_encode($heliImg); ?>