This commit is contained in:
David Spáčil
2026-06-29 20:21:39 +02:00
commit 563f963951
5 changed files with 778 additions and 0 deletions
View File
+51
View File
@@ -0,0 +1,51 @@
# Heroltice 2026
Statická webová stránka — průvodce dovolenou v Herolticích (část obce Štíty, okres Šumperk) a okolí, s interaktivní mapou. Interní freetime projekt.
## Soubory
| soubor | obsah |
|---|---|
| `index.html` | stránka: text zprávy + mapa nahoře (hero) |
| `style.css` | styl (terénní/mapová estetika, značkové markery) |
| `heroltice.geojson` | 11 bodů cílů (CRS84 / WGS84) — jediný zdroj dat pro mapu i karty; otevřeš rovnou v QGIS |
| `.nojekyll` | vypne Jekyll na GitHub Pages (servíruje soubory beze změny) |
Mapa: **Leaflet** + **OpenStreetMap** / **OpenTopoMap** (přepínač vpravo nahoře), bez API klíče. Knihovna se tahá z CDN (unpkg).
## Spuštění lokálně
Stránka načítá `heroltice.geojson` přes `fetch()`, takže **nefunguje přes `file://`** — je potřeba HTTP server:
```bash
python3 -m http.server 8000
# pak http://localhost:8000
```
## Nahrání do repa
Repo už existuje. Nejjednodušší — soubory zkopírovat do klonu a commitnout:
```bash
git clone https://github.com/david-spacil/heroltice2026.git
cd heroltice2026
# sem zkopíruj index.html style.css heroltice.geojson README.md .nojekyll
git add index.html style.css heroltice.geojson README.md .nojekyll
git commit -m "Web s interaktivní mapou (Leaflet + OSM/OpenTopoMap)"
git push origin main
```
(Nebo přes Gitea→GitHub workflow, který už máš zaběhnutý.)
## GitHub Pages
Settings → Pages → *Build and deployment* → Source: **Deploy from a branch** → branch `main`, folder `/ (root)` → Save.
Za chvíli poběží na `https://david-spacil.github.io/heroltice2026/`.
## Úpravy dat
Body se mění **jen** v `heroltice.geojson` (souřadnice `[lon, lat]`, vlastnosti `nazev`, `kategorie`, `vzdalenost`, `popis`, `odkaz`, `odkaz_text`). Kategorie: `zakladna`, `kultura`, `priroda`, `archeologie`, `zabava` — barvy řídí CSS třídy `.map-blaze--*` a `.card--*`. Přidání bodu = jeden nový feature, mapa i karty se vygenerují samy.
## Zdroje dat
Wikipedie, Památkový katalog NPÚ, ISAD/SAS NPÚ, Archeologické léto, Kudy z nudy a oficiální weby (odkazy v patičce a v sekci *Zdroje*). Mapové podklady © OpenStreetMap přispěvatelé, © OpenTopoMap (CC-BY-SA).
+139
View File
@@ -0,0 +1,139 @@
{
"type": "FeatureCollection",
"name": "heroltice2026_cile",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{
"type": "Feature",
"properties": {
"nazev": "Heroltice (základna)",
"kategorie": "zakladna",
"vzdalenost": "0 km",
"popis": "Výchozí bod. Kostel sv. Jana Křtitele (1718, kulturní památka), rekreační areál Heroltická, lyžařský vlek.",
"odkaz": "https://cs.wikipedia.org/wiki/Heroltice_(%C5%A0t%C3%ADty)",
"odkaz_text": "Wikipedie"
},
"geometry": { "type": "Point", "coordinates": [16.734010, 49.9872732] }
},
{
"type": "Feature",
"properties": {
"nazev": "Štíty náměstí (MPZ)",
"kategorie": "kultura",
"vzdalenost": "~3,5 km",
"popis": "Městská památková zóna. Barokní kostel Nanebevzetí P. Marie (1755), morový sloup (1716), renesanční radnice.",
"odkaz": "https://www.stity.cz/mesto-a-samosprava/zakladni-informace-o-meste/",
"odkaz_text": "Město Štíty"
},
"geometry": { "type": "Point", "coordinates": [16.7629642, 49.9620552] }
},
{
"type": "Feature",
"properties": {
"nazev": "Acrobat Park Aleše Valenty",
"kategorie": "zabava",
"vzdalenost": "~3,5 km",
"popis": "Sportovní centrum Aleše Valenty (2002): skoky do vody, trampolíny, wellness, restaurace. Provoz zhruba červen–říjen.",
"odkaz": "https://www.acrobatpark.com/",
"odkaz_text": "Acrobat Park"
},
"geometry": { "type": "Point", "coordinates": [16.7594473, 49.9615199] }
},
{
"type": "Feature",
"properties": {
"nazev": "Rozhledna Lázek",
"kategorie": "priroda",
"vzdalenost": "~1015 km",
"popis": "Nejvyšší bod Zábřežské vrchoviny (715 m). Dřevěná věž z roku 1933, 87 schodů, výhled na Orlické hory a Jeseníky. Otevřeno hlavně o víkendech.",
"odkaz": "https://cs.wikipedia.org/wiki/L%C3%A1zek_(rozhledna)",
"odkaz_text": "Wikipedie"
},
"geometry": { "type": "Point", "coordinates": [16.7052725, 49.9257063] }
},
{
"type": "Feature",
"properties": {
"nazev": "Zřícenina hradu Hoštejn",
"kategorie": "archeologie",
"vzdalenost": "~15 km",
"popis": "Gotický hrad (2. pol. 13. stol.), archeologická lokalita ÚAN I. Volně přístupné, památník dráhy, vyhlídka, pítko.",
"odkaz": "https://isad.npu.cz/zricenina-hradu-hostejn-a-stredoveke-jadro-obce-14876",
"odkaz_text": "ISAD / SAS NPÚ"
},
"geometry": { "type": "Point", "coordinates": [16.7766132, 49.8768548] }
},
{
"type": "Feature",
"properties": {
"nazev": "Hrad Bludov (Hradisko)",
"kategorie": "archeologie",
"vzdalenost": "~20 km",
"popis": "Pozůstatky hradu na ostrožně, ÚAN I; pobořen 1471 Matyášem Korvínem. Bývá cílem Archeologického léta.",
"odkaz": "https://isad.npu.cz/hrad-bludov-14793",
"odkaz_text": "ISAD / SAS NPÚ"
},
"geometry": { "type": "Point", "coordinates": [16.9328341, 49.9547992] }
},
{
"type": "Feature",
"properties": {
"nazev": "Vlastivědné muzeum Šumperk",
"kategorie": "kultura",
"vzdalenost": "~20 km",
"popis": "„Brána Jeseníků“. Expozice čarodějnických procesů (Geschaderův dům), historické jádro města.",
"odkaz": "https://muzeum-sumperk.cz/",
"odkaz_text": "Vlastivědné muzeum"
},
"geometry": { "type": "Point", "coordinates": [16.9783623, 49.9651256] }
},
{
"type": "Feature",
"properties": {
"nazev": "Zámek Velké Losiny",
"kategorie": "kultura",
"vzdalenost": "~35 km",
"popis": "Renesanční žerotínský zámek s arkádami; spjatý s čarodějnickými procesy. Zavřeno v pondělí.",
"odkaz": "http://www.zamek-velkelosiny.cz/",
"odkaz_text": "Zámek Velké Losiny"
},
"geometry": { "type": "Point", "coordinates": [17.0313608, 50.0234475] }
},
{
"type": "Feature",
"properties": {
"nazev": "Ruční papírna Velké Losiny",
"kategorie": "kultura",
"vzdalenost": "~35 km",
"popis": "Nejstarší funkční papírna střední Evropy (zal. 15911596), národní kulturní památka, Muzeum papíru.",
"odkaz": "https://cs.wikipedia.org/wiki/Ru%C4%8Dn%C3%AD_pap%C3%ADrna_Velk%C3%A9_Losiny",
"odkaz_text": "Wikipedie"
},
"geometry": { "type": "Point", "coordinates": [17.0380374, 50.0296768] }
},
{
"type": "Feature",
"properties": {
"nazev": "Hora Matky Boží (Dolní Hedeč)",
"kategorie": "kultura",
"vzdalenost": "~2025 km",
"popis": "Barokní poutní klášter nad Králíky (765 m), národní kulturní památka, Svaté schody, alej s křížovou cestou.",
"odkaz": "https://cs.wikipedia.org/wiki/Hora_Matky_Bo%C5%BE%C3%AD",
"odkaz_text": "Wikipedie"
},
"geometry": { "type": "Point", "coordinates": [16.781944, 50.075000] }
},
{
"type": "Feature",
"properties": {
"nazev": "Dělostřelecká tvrz Bouda",
"kategorie": "kultura",
"vzdalenost": "~2530 km",
"popis": "Nejzachovalejší čs. dělostřelecká tvrz (193638), podzemí přes 1,7 km. Sezona květen–říjen, teplé oblečení.",
"odkaz": "https://www.tvrzbouda.cz/",
"odkaz_text": "Tvrz Bouda"
},
"geometry": { "type": "Point", "coordinates": [16.6770282, 50.0693222] }
}
]
}
+319
View File
@@ -0,0 +1,319 @@
<!doctype html>
<html lang="cs">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Heroltice 2026 — průvodce dovolenou a okolím</title>
<meta name="description" content="Heroltice (část obce Štíty, okres Šumperk): historie, památky, večerní zábava a tipy na výlety v okolí s interaktivní mapou.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Zilla+Slab:wght@500;600;700&family=Source+Sans+3:wght@400;600&family=IBM+Plex+Mono:wght@400;500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin="">
<link rel="stylesheet" href="style.css">
</head>
<body>
<header class="masthead">
<div class="wrap">
<div class="kicker">
<span class="blz"><i style="background:#cf3b2e"></i><i style="background:#2f6f9f"></i><i style="background:#3a7d44"></i></span>
Terénní zápisník · interní freetime
</div>
<h1>Heroltice 2026
<small>Část obce Štíty, okres Šumperk. Klidná horská vesnička na česko-moravském pomezí — historie, památky, večerní zábava a vějíř výletů do okolí.</small>
</h1>
<div class="meta">
<span>49.987° N · 16.734° E</span>
<span>450750 m n. m.</span>
<span>Olomoucký kraj</span>
</div>
</div>
</header>
<div class="mapwrap">
<div id="map"></div>
<div class="maphint">Mapové podklady přepneš vpravo nahoře (OSM / OpenTopoMap). Klikni na značku nebo na kartu cíle níže.</div>
<p class="map-error" id="map-error">
Mapu se nepodařilo načíst. Stránka čte <code>heroltice.geojson</code> přes <code>fetch()</code>, což funguje jen po HTTP — tedy na GitHub Pages nebo přes lokální server (<code>python3 -m http.server</code>), ne otevřením souboru přes <code>file://</code>.
</p>
</div>
<nav class="toc">
<div class="wrap">
<a href="#prehled">Přehled</a>
<a href="#heroltice">1 · Heroltice</a>
<a href="#okoli">2 · Okolí</a>
<a href="#cile">Cíle na mapě</a>
<a href="#doporuceni">Doporučení</a>
<a href="#upozorneni">Upozornění</a>
<a href="#zdroje">Zdroje</a>
</div>
</nav>
<main class="wrap">
<section id="prehled">
<p class="eyebrow">Přehled</p>
<div class="facts">
<div><div class="n">89</div><div class="l">obyvatel (2021)</div></div>
<div><div class="n">1278</div><div class="l">první zmínka</div></div>
<div><div class="n">1718</div><div class="l">kostel sv. Jana Křtitele</div></div>
<div><div class="n">~3,5 km</div><div class="l">do Štítů</div></div>
</div>
<div class="summary">
<p class="eyebrow">Shrnutí</p>
<p>Heroltice jsou malá horská vesnička (<a href="https://cs.wikipedia.org/wiki/Heroltice_(%C5%A0t%C3%ADty)">89 obyvatel dle Sčítání 2021</a>) 3,5 km severoseverozápadně od Štítů; hlavní památkou je chráněný <a href="https://pamatkovykatalog.cz/kostel-sv-jana-krtitele-14643908">kostel sv. Jana Křtitele</a> (1718). Vlastní večerní zábava je minimální (rekreační areál Heroltická, spolkové akce) — širší nabídka je ve Štítech a Zábřehu. Okolí nabízí bohaté výlety: městská památková zóna Štíty s <a href="https://www.acrobatpark.com/">Acrobat Parkem</a>, <a href="https://www.kudyznudy.cz/aktivity/prirodni-park-brezna">přírodní park Březná</a>, <a href="https://cs.wikipedia.org/wiki/L%C3%A1zek_(rozhledna)">rozhlednu Lázek</a>, poutní <a href="https://cs.wikipedia.org/wiki/Hora_Matky_Bo%C5%BE%C3%AD">Horu Matky Boží</a>, <a href="https://www.tvrzbouda.cz/">tvrz Bouda</a> a <a href="http://www.zamek-velkelosiny.cz/">Velké Losiny</a>.</p>
</div>
</section>
<section id="heroltice">
<div class="sec-head"><span class="sec-num">01</span><h2>Heroltice</h2></div>
<div class="summary">
<p class="eyebrow">Shrnutí sekce</p>
<p>První zmínka 1278, jméno zřejmě od zakladatele Heralta. V 19. století lidnatá obec (přes 1000 obyvatel), po odsunu německého obyvatelstva a začlenění ke Štítům (1976) výrazný úpadek na dnešních 89 obyvatel. Dominantou je barokní kostel sv. Jana Křtitele z roku 1718 (kulturní památka), doplněný empírovou farou a sousoším Nejsvětější Trojice. Vlastní večerní zábava je v obci minimální.</p>
</div>
<h3>Historie</h3>
<p>Heroltice (německy <em>Herautz</em>) jsou sídlo uličního typu roztažené podél Heroltického potoka, který pod obcí ústí do řeky Březná. Leží v údolí mezi Jeseníky a Orlickými horami v nadmořské výšce 450750 m n. m.; díky okolním kopcům a lyžařskému vleku mají výrazně horský charakter. Jméno pochází zřejmě podle zakladatele Heralta či Heralda (německý název <em>Herautz</em>, dřívější české <em>Heraltice</em>).</p>
<p>Obec je připomínána od roku <strong>1278</strong> jako Velké (Dolní) Heroltice; přináležela ke štíteckému (šilperskému) panství. V roce 1623 se dostala se šilperským panstvím pod lichtenštejnskou správu se sídlem v Rudě nad Moravou. Patřila k největším vsím panství — roku 1834 měla 156 domů a 1026 obyvatel, vesměs německé národnosti. V roce 1930 zde žilo 575 osob; po odsunu a dosídlení počet jen o málo přesáhl 130 lidí. V roce 1976 (jinde uváděno 1978) byly Heroltice připojeny ke Štítům. Dnes mají <strong>89 obyvatel</strong> (Sčítání 2021, ČSÚ). Z obce pocházel politik Rudolf Felzmann (18661937). <span class="coords">Zdroj: <a href="https://cs.wikipedia.org/wiki/Heroltice_(%C5%A0t%C3%ADty)">Wikipedie</a>.</span></p>
<h3>Pamětihodnosti</h3>
<h4>Kostel sv. Jana Křtitele <span class="coords">— kulturní památka</span></h4>
<p>Původně barokní kaple z roku 1718 ve výšce 537 m n. m. Zděný orientovaný kostel s půlkruhovým závěrem, věží (28 m) a sakristií; nad vstupem světlík s božím okem a monogramem IHS. Obrazy v interiéru vyobrazují život a smrt Jana Křtitele, varhany mají ojedinělou květinovou výzdobu omítek z roku 1910. Od roku 2009 chráněná kulturní památka. <span class="coords">Zdroj: <a href="https://pamatkovykatalog.cz/kostel-sv-jana-krtitele-14643908">Památkový katalog NPÚ</a>.</span></p>
<h4>Bývalá fara (čp. 158) <span class="coords">— kulturní památka</span></h4>
<p>Empírový dům severně od kostela z první poloviny 19. století, doklad zlidovělé architektury s fasádou zdobenou maltovým štukem.</p>
<h4>Sousoší Nejsvětější Trojice</h4>
<p>Kamenné sousoší v postranní uličce nedaleko kostela, patrně dílo místního kameníka; na postamentu dedikační nápis. V obci a okolí najdeš i kříže a boží muka typická pro chudé obce na pomezí.</p>
<h4>Archeologie</h4>
<p>Pro katastr „Heroltice u Štítů“ není v <a href="https://isad.npu.cz/">ISAD/SAS NPÚ</a> ani v <a href="https://amcr.aiscr.cz">AMCR</a> evidován samostatný archeologický záznam (ÚAN I/II) — ověřeno, prázdno. Celé území ČR přitom spadá minimálně do kategorie ÚAN III, kde výskyt nálezů nelze vyloučit.</p>
<h3>Večerní zábava</h3>
<p><strong>V Herolticích</strong> je nabídka minimální a odpovídá klidnému rekreačnímu charakteru: rekreační areál <strong>Heroltická</strong> (sportoviště, hospůdka, wellness, chatky, kemp), lyžařský vlek a spolkové akce (hasičský ples, sraz RC modelářů). <strong>Ve Štítech</strong> (~3,5 km) jsou restaurace a hospody (např. u penzionu Černá kočka), diskotéka a <a href="https://www.acrobatpark.com/">Acrobat Park</a> s restaurací a wellness. V Zábřehu funguje pivovar <strong>Welzl</strong> s restaurací „Kotelna“.</p>
</section>
<section id="okoli">
<div class="sec-head"><span class="sec-num">02</span><h2>Tipy v okolí</h2></div>
<div class="summary">
<p class="eyebrow">Shrnutí sekce</p>
<p>V dosahu 1540 km je hustá síť cílů. <strong>Kulturně</strong> dominuje městská památková zóna Štíty, <a href="https://isad.npu.cz/zricenina-hradu-hostejn-a-stredoveke-jadro-obce-14876">zřícenina Hoštejn</a>, <a href="https://muzeum-sumperk.cz/">Šumperk</a> (čarodějnické procesy), <a href="http://www.zamek-velkelosiny.cz/">Velké Losiny</a> (zámek + nejstarší funkční <a href="https://cs.wikipedia.org/wiki/Ru%C4%8Dn%C3%AD_pap%C3%ADrna_Velk%C3%A9_Losiny">ruční papírna</a> střední Evropy), poutní <a href="https://cs.wikipedia.org/wiki/Hora_Matky_Bo%C5%BE%C3%AD">Hora Matky Boží</a> a <a href="https://www.tvrzbouda.cz/">tvrz Bouda</a>. <strong>Přírodně</strong> je nejblíže <a href="https://www.kudyznudy.cz/aktivity/prirodni-park-brezna">přírodní park Březná</a> (jarní bledule) a <a href="https://cs.wikipedia.org/wiki/L%C3%A1zek_(rozhledna)">rozhledna Lázek</a>. <strong>Archeologicky</strong> vynikají lokality ÚAN I Hoštejn a Bludov, v sezoně s prohlídkami <a href="https://www.kudyznudy.cz/aktuality/archeologicke-leto-nabidne-prochazky-na-archeologi">Archeologického léta</a>.</p>
</div>
<h3 id="cile">Cíle na mapě</h3>
<p>Karty odpovídají značkám na mapě nahoře. Klikni na kartu — mapa na cíl odskočí a otevře jeho popis.</p>
<div class="cards" id="cards-container">
<p class="coords" style="grid-column:1/-1">Načítám cíle z <code>heroltice.geojson</code></p>
</div>
<h3>Kulturní památky</h3>
<p><strong>Štíty (~3,5 km)</strong> — historické jádro je městskou památkovou zónou. Barokní <strong>kostel Nanebevzetí Panny Marie</strong> (1755), <strong>mariánský morový sloup</strong> (1716), sochy sv. Jana Nepomuckého (1732) a sv. Anny (1769), renesanční stará radnice. <strong><a href="https://www.acrobatpark.com/">Acrobat Park</a></strong> olympijského vítěze Aleše Valenty (otevřen 2002) — skoky do vody, trampolíny, závod Freestyle Czech Open.</p>
<p><strong><a href="https://isad.npu.cz/zricenina-hradu-hostejn-a-stredoveke-jadro-obce-14876">Zřícenina hradu Hoštejn</a> (~15 km)</strong> — gotický hrad z 2. pol. 13. století, za husitských válek opěrný bod husitů; zdivo v roce 1845 rozebráno na stavbu železnice. Kulturní památka od 1964.</p>
<p><strong><a href="https://muzeum-sumperk.cz/">Šumperk</a> (~20 km)</strong> — „brána Jeseníků“: Vlastivědné muzeum (Pavlínin dvůr) a expozice čarodějnických procesů v Geschaderově domě.</p>
<p><strong><a href="http://www.zamek-velkelosiny.cz/">Velké Losiny</a> (~35 km)</strong> — renesanční žerotínský zámek a <strong><a href="https://cs.wikipedia.org/wiki/Ru%C4%8Dn%C3%AD_pap%C3%ADrna_Velk%C3%A9_Losiny">ruční papírna</a></strong> (zal. 15911596), nejstarší funkční papírenská manufaktura střední Evropy, národní kulturní památka s Muzeem papíru; v obci termální lázně.</p>
<p><strong><a href="https://cs.wikipedia.org/wiki/Hora_Matky_Bo%C5%BE%C3%AD">Hora Matky Boží</a>, Dolní Hedeč (~2025 km)</strong> — barokní poutní klášter nad Králíky (765 m), kostel dokončen 1700, klášter 1710, národní kulturní památka od 2018; lipová alej z roku 1705 s osmi kaplemi.</p>
<p><strong><a href="https://www.tvrzbouda.cz/">Dělostřelecká tvrz Bouda</a> (~2530 km)</strong> — nejzachovalejší čs. dělostřelecká tvrz (193638), největší muzeum opevnění v ČR; 5 srubů a podzemí přes 1,7 km. Kulturní památka od 1995.</p>
<h3>Přírodní památky</h3>
<p><strong><a href="https://www.kudyznudy.cz/aktivity/prirodni-park-brezna">Přírodní park Březná</a></strong> — zřízen 1997 na ploše 11 600 ha; údolí řek Březná a Moravská Sázava, jarní koberce <strong>bledule jarní</strong>, balvanová moře a mrazové sruby na svazích Pálené hory a Vlčí jámy. Severní část katastru Štítů i Heroltice zasahují do ptačí oblasti Králický Sněžník (ochrana chřástala polního).</p>
<p><strong><a href="https://cs.wikipedia.org/wiki/L%C3%A1zek_(rozhledna)">Rozhledna Lázek</a> (~1015 km)</strong> — nejvyšší bod Zábřežské vrchoviny (715 m), dřevěná věž z roku 1933, 87 schodů, výhled na Orlické hory, Jeseníky, Krkonoše a Železné hory.</p>
<p><strong>Národní přírodní rezervace</strong> v širším okolí (<a href="https://cs.wikipedia.org/wiki/Okres_%C5%A0umperk">okres Šumperk</a>): Králický Sněžník, Praděd, Rašeliniště Skřítek a Šerák-Keprník + CHKO Jeseníky — na celodenní výlet.</p>
<h3>Archeologie</h3>
<p><strong><a href="https://isad.npu.cz/zricenina-hradu-hostejn-a-stredoveke-jadro-obce-14876">Hoštejn</a></strong> (ID SAS 14876, ÚAN I) a <strong><a href="https://isad.npu.cz/hrad-bludov-14793">Bludov</a></strong> (ID SAS 14793, ÚAN I) jsou významné archeologické lokality. <a href="https://www.archeologickeleto.cz/">Archeologické léto</a> (koordinují Archeologické ústavy AV ČR, regionálně Vlastivědné muzeum v Šumperku) nabízí v sezoně komentované prohlídky — mj. <a href="https://www.archeologickeleto.cz/akce/bludov/">hrad Bludov</a> a expozici „Pravěk Mohelnicka“.</p>
</section>
<section id="doporuceni">
<p class="eyebrow">Praktické tipy</p>
<h2>Doporučení pro plánování</h2>
<p><strong>Základní pobyt:</strong> klidná aktivní dovolená — cykloturistika údolím Březné, houbaření, pěší turistika, v zimě lyžování. Ubytování: rekreační areál Heroltická nebo chalupy.</p>
<p><strong>Večerní program:</strong> Štíty (~3,5 km) nebo Zábřeh (pivovar Welzl).</p>
<p><strong>Půldenní výlety:</strong> Štíty + Acrobat Park · rozhledna Lázek · přírodní park Březná (na jaře bledule) · zřícenina Hoštejn.</p>
<p><strong>Celodenní výlety:</strong> Hora Matky Boží + tvrz Bouda · Velké Losiny (zámek, papírna, lázně) · Šumperk.</p>
<p><strong>Archeologie:</strong> sleduj <a href="https://www.archeologickeleto.cz/">archeologickeleto.cz</a> (rezervace zpravidla od začátku června).</p>
</section>
<section id="upozorneni">
<p class="eyebrow">Caveats</p>
<h2>Upozornění a omezení</h2>
<div class="note">
<ul>
<li><strong>Sezónnost:</strong> rozhledna Lázek, papírna, tvrz Bouda i akce Archeologického léta mají omezenou otevírací dobu (zpravidla květen–říjen / o víkendech). Před cestou ověř aktuální stav.</li>
<li><strong>Doprava:</strong> železniční trať do Štítů byla v roce 2018 zrušena — autem nebo autobusem.</li>
<li><strong>Rozpory v pramenech:</strong> připojení Heroltic ke Štítům (1976 vs. 1978); zápis kostela ve Štítech mezi KP (1958 vs. 1964); papírna NKP (2001 vs. 2002); podzemí Boudy „přes 1,7 km“ vs. zaokrouhleno 1,5 km.</li>
<li><strong>Vzdálenosti</strong> jsou orientační (po silnici), ověř v mapové aplikaci.</li>
</ul>
</div>
</section>
<section id="zdroje">
<p class="eyebrow">Ověřené zdroje</p>
<h2>Zdroje a odkazy</h2>
<div class="linklist">
<h4>Heroltice a Štíty</h4>
<ul>
<li><a href="https://cs.wikipedia.org/wiki/Heroltice_(%C5%A0t%C3%ADty)">Wikipedie — Heroltice (Štíty)</a></li>
<li><a href="https://pamatkovykatalog.cz/kostel-sv-jana-krtitele-14643908">Památkový katalog NPÚ — kostel sv. Jana Křtitele</a></li>
<li><a href="https://www.stity.cz/mesto-a-samosprava/zakladni-informace-o-meste/">Město Štíty</a></li>
<li><a href="http://www.stitecko.cz/nature.php">Štítecko — příroda</a></li>
</ul>
<h4>Kulturní cíle</h4>
<ul>
<li><a href="https://www.acrobatpark.com/">Acrobat Park</a> · <a href="https://www.kudyznudy.cz/aktivity/jako-ales-valenta-v-acrobat-parku-stity">Kudy z nudy</a></li>
<li><a href="http://www.zamek-velkelosiny.cz/">Zámek Velké Losiny</a></li>
<li><a href="https://cs.wikipedia.org/wiki/Ru%C4%8Dn%C3%AD_pap%C3%ADrna_Velk%C3%A9_Losiny">Ruční papírna — Wikipedie</a> · <a href="https://www.kudyznudy.cz/aktivity/rucni-papirna-velke-losiny-muzeum-papiru">Kudy z nudy</a></li>
<li><a href="https://cs.wikipedia.org/wiki/Hora_Matky_Bo%C5%BE%C3%AD">Hora Matky Boží — Wikipedie</a> · <a href="https://www.kudyznudy.cz/aktivity/poutni-areal-hora-matky-bozi-v-dolni-hedeci">Kudy z nudy</a></li>
<li><a href="https://cs.wikipedia.org/wiki/Bouda_(d%C4%9Blost%C5%99eleck%C3%A1_tvrz)">Tvrz Bouda — Wikipedie</a> · <a href="https://www.tvrzbouda.cz/">oficiální</a></li>
<li><a href="https://muzeum-sumperk.cz/">Vlastivědné muzeum v Šumperku</a></li>
</ul>
<h4>Přírodní cíle</h4>
<ul>
<li><a href="https://www.kudyznudy.cz/aktivity/prirodni-park-brezna">Přírodní park Březná — Kudy z nudy</a></li>
<li><a href="http://www.turistika.ruda.cz/pp_brezna.html">Přírodní park Březná — Region Ruda</a></li>
<li><a href="https://cs.wikipedia.org/wiki/L%C3%A1zek_(rozhledna)">Rozhledna Lázek — Wikipedie</a></li>
<li><a href="https://cs.wikipedia.org/wiki/Okres_%C5%A0umperk">Okres Šumperk (NPR, CHKO)</a></li>
</ul>
<h4>Archeologie (SAS / AMCR)</h4>
<ul>
<li><a href="https://isad.npu.cz/zricenina-hradu-hostejn-a-stredoveke-jadro-obce-14876">ISAD — Hoštejn</a></li>
<li><a href="https://isad.npu.cz/hrad-bludov-14793">ISAD — Bludov</a></li>
<li><a href="https://www.archeologickeleto.cz/">Archeologické léto</a> · <a href="https://www.archeologickeleto.cz/akce/bludov/">Bludov</a></li>
<li><a href="https://amcr.aiscr.cz">Digiarchiv / mapa SAS AMCR</a></li>
</ul>
</div>
</section>
</main>
<footer>
<div class="wrap">
Heroltice 2026 · interní freetime projekt · data: Wikipedie, Památkový katalog NPÚ, ISAD/SAS NPÚ, Kudy z nudy, oficiální weby ·
mapa © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> přispěvatelé, <a href="https://opentopomap.org/">OpenTopoMap</a> (CC-BY-SA)
</div>
</footer>
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
<script>
(function () {
var CAT = {
zakladna: { label: "Základna", color: "#cf3b2e" },
kultura: { label: "Kultura", color: "#2f6f9f" },
priroda: { label: "Příroda", color: "#3a7d44" },
archeologie: { label: "Archeologie", color: "#b07d2b" },
zabava: { label: "Sport & zábava", color: "#7d5ba6" }
};
var reduceMotion = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
var map = L.map("map", { scrollWheelZoom: false });
var osm = L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
maxZoom: 19, attribution: "© OpenStreetMap přispěvatelé"
});
var topo = L.tileLayer("https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", {
maxZoom: 17, attribution: "© OpenStreetMap přispěvatelé, SRTM | © OpenTopoMap (CC-BY-SA)"
});
osm.addTo(map);
L.control.layers({ "OpenStreetMap": osm, "OpenTopoMap (terén)": topo }).addTo(map);
map.setView([49.96, 16.83], 10); // fallback, než dorazí data
function blazeIcon(cat, isBase) {
return L.divIcon({
className: "",
html: '<span class="map-blaze map-blaze--' + cat + (isBase ? " map-blaze--base" : "") + '"></span>',
iconSize: isBase ? [22, 22] : [17, 17],
iconAnchor: isBase ? [11, 11] : [9, 9],
popupAnchor: [0, -11]
});
}
function esc(s) {
return String(s).replace(/[&<>"]/g, function (c) {
return { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;" }[c];
});
}
function fail() {
document.getElementById("map-error").style.display = "block";
var c = document.getElementById("cards-container");
if (c) c.innerHTML = '<p class="coords" style="grid-column:1/-1">Cíle se nepodařilo načíst — viz upozornění u mapy (potřeba HTTP, ne file://).</p>';
}
fetch("heroltice.geojson")
.then(function (r) { if (!r.ok) throw new Error(r.status); return r.json(); })
.then(function (gj) {
var markers = [];
var byName = {};
var cardsHTML = "";
gj.features.forEach(function (f) {
var p = f.properties;
var lng = f.geometry.coordinates[0], lat = f.geometry.coordinates[1];
var cat = CAT[p.kategorie] || { label: p.kategorie, color: "#5c6b63" };
var isBase = p.kategorie === "zakladna";
var popup =
'<div class="pop-cat" style="color:' + cat.color + '">' + esc(cat.label) + ' · ' + esc(p.vzdalenost) + '</div>' +
'<div class="pop-name">' + esc(p.nazev) + '</div>' +
'<p class="pop-desc">' + esc(p.popis) + '</p>' +
'<div class="pop-foot"><span>' + lat.toFixed(4) + '° N · ' + lng.toFixed(4) + '° E</span>' +
'<a href="' + esc(p.odkaz) + '" target="_blank" rel="noopener">' + esc(p.odkaz_text) + ' ↗</a></div>';
var m = L.marker([lat, lng], { icon: blazeIcon(p.kategorie, isBase), title: p.nazev })
.bindPopup(popup);
m.addTo(map);
markers.push(m);
byName[p.nazev] = m;
cardsHTML +=
'<article class="card card--' + p.kategorie + '" data-name="' + esc(p.nazev) + '" tabindex="0" role="button">' +
'<div class="c-top"><span class="c-cat" style="color:' + cat.color + '">' + esc(cat.label) + '</span>' +
'<span class="c-dist">' + esc(p.vzdalenost) + '</span></div>' +
'<h4>' + esc(p.nazev) + '</h4>' +
'<p class="c-desc">' + esc(p.popis) + '</p>' +
'<div class="c-coords">' + lat.toFixed(4) + '° N · ' + lng.toFixed(4) + '° E</div>' +
'<a class="c-src" href="' + esc(p.odkaz) + '" target="_blank" rel="noopener" onclick="event.stopPropagation()">' + esc(p.odkaz_text) + ' ↗</a>' +
'</article>';
});
var group = L.featureGroup(markers);
map.fitBounds(group.getBounds().pad(0.12));
var container = document.getElementById("cards-container");
container.innerHTML = cardsHTML;
function focusMarker(name) {
var m = byName[name];
if (!m) return;
var ll = m.getLatLng();
if (reduceMotion) map.setView(ll, 13);
else map.flyTo(ll, 13, { duration: 0.7 });
m.openPopup();
document.getElementById("map").scrollIntoView({ behavior: reduceMotion ? "auto" : "smooth", block: "center" });
}
Array.prototype.forEach.call(container.querySelectorAll(".card"), function (card) {
card.addEventListener("click", function () { focusMarker(card.getAttribute("data-name")); });
card.addEventListener("keydown", function (e) {
if (e.key === "Enter" || e.key === " ") { e.preventDefault(); focusMarker(card.getAttribute("data-name")); }
});
});
// legenda
var legend = L.control({ position: "bottomright" });
legend.onAdd = function () {
var div = L.DomUtil.create("div", "legend");
var rows = '<b>Kategorie</b>';
Object.keys(CAT).forEach(function (k) {
rows += '<div class="row"><i style="background:' + CAT[k].color + '"></i>' + CAT[k].label + '</div>';
});
div.innerHTML = rows;
return div;
};
legend.addTo(map);
})
.catch(fail);
})();
</script>
</body>
</html>
+269
View File
@@ -0,0 +1,269 @@
/* =========================================================
Heroltice 2026 — terénní zápisník
Paleta: lesní inkoust + parchment, kategorie jako turistické značky
========================================================= */
:root {
--ink: #15231d;
--ink-soft: #2b3d35;
--paper: #eef1ea;
--card: #fbfcf9;
--green: #2f6f57;
--green-deep: #1f4f3e;
--cat-zakladna: #cf3b2e;
--cat-kultura: #2f6f9f;
--cat-priroda: #3a7d44;
--cat-archeologie: #b07d2b;
--cat-zabava: #7d5ba6;
--line: rgba(21, 35, 29, 0.14);
--muted: #5c6b63;
--maxw: 1080px;
--r: 8px;
--disp: "Zilla Slab", Georgia, serif;
--body: "Source Sans 3", system-ui, -apple-system, sans-serif;
--mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
html { scroll-behavior: auto; }
* { animation: none !important; transition: none !important; }
}
body {
margin: 0;
font-family: var(--body);
color: var(--ink);
background: var(--paper);
line-height: 1.62;
font-size: 17px;
-webkit-font-smoothing: antialiased;
}
a { color: var(--green-deep); text-underline-offset: 2px; }
a:hover { color: var(--cat-zakladna); }
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 22px; }
/* ---------- eyebrow / mono labels ---------- */
.eyebrow {
font-family: var(--mono);
font-size: 12px;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--green);
margin: 0 0 10px;
}
.coords { font-family: var(--mono); font-size: 12.5px; color: var(--muted); }
/* ---------- header / hero ---------- */
.masthead {
position: relative;
background: var(--ink);
color: #e9efe8;
overflow: hidden;
border-bottom: 4px solid var(--green);
}
/* jemná vrstevnicová textura */
.masthead::before {
content: "";
position: absolute; inset: 0;
background-image:
radial-gradient(circle at 20% 30%, transparent 38px, rgba(255,255,255,0.04) 39px, transparent 40px),
radial-gradient(circle at 20% 30%, transparent 70px, rgba(255,255,255,0.035) 71px, transparent 72px),
radial-gradient(circle at 20% 30%, transparent 104px, rgba(255,255,255,0.03) 105px, transparent 106px),
radial-gradient(circle at 78% 72%, transparent 50px, rgba(255,255,255,0.04) 51px, transparent 52px),
radial-gradient(circle at 78% 72%, transparent 90px, rgba(255,255,255,0.03) 91px, transparent 92px);
pointer-events: none;
}
.masthead .wrap { position: relative; padding: 46px 22px 30px; }
.kicker {
display: inline-flex; align-items: center; gap: 9px;
font-family: var(--mono); font-size: 12px; letter-spacing: 0.16em;
text-transform: uppercase; color: #9fc3ad;
margin-bottom: 16px;
}
.kicker .blz { display: inline-flex; gap: 3px; }
.kicker .blz i {
width: 11px; height: 11px; border: 1.5px solid rgba(255,255,255,0.55); border-radius: 2px;
}
.masthead h1 {
font-family: var(--disp); font-weight: 700;
font-size: clamp(34px, 6vw, 60px);
line-height: 1.02; margin: 0 0 14px; letter-spacing: -0.01em;
}
.masthead h1 small {
display: block; font-family: var(--body); font-weight: 400;
font-size: clamp(15px, 2.2vw, 19px); color: #b9d2c2; letter-spacing: 0;
margin-top: 10px; max-width: 60ch;
}
.masthead .meta {
display: flex; flex-wrap: wrap; gap: 8px 26px; margin-top: 22px;
font-family: var(--mono); font-size: 12.5px; color: #9fc3ad;
}
/* ---------- map ---------- */
.mapwrap { position: relative; background: var(--ink); }
#map {
height: clamp(380px, 62vh, 620px);
width: 100%;
background: #dfe4dc;
}
.maphint {
font-family: var(--mono); font-size: 12px; color: #9fc3ad;
text-align: center; padding: 9px 16px; background: var(--ink);
}
.map-error {
display: none;
padding: 18px 20px; margin: 0; background: #fbeceb; color: #7a241c;
border-top: 3px solid var(--cat-zakladna); font-size: 15px;
}
.map-error code { font-family: var(--mono); font-size: 13px; }
/* Leaflet popup ladění */
.leaflet-popup-content-wrapper { border-radius: var(--r); }
.leaflet-popup-content { margin: 13px 15px; font-family: var(--body); }
.pop-cat {
font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em;
text-transform: uppercase; font-weight: 500;
}
.pop-name { font-family: var(--disp); font-weight: 600; font-size: 18px; margin: 3px 0 6px; }
.pop-desc { font-size: 14px; color: #333; margin: 0 0 8px; }
.pop-foot { font-family: var(--mono); font-size: 12px; display: flex; justify-content: space-between; gap: 12px; }
/* značkové (KČT-style) markery */
.map-blaze {
display: block; width: 17px; height: 17px;
border: 2.5px solid #fff; border-radius: 3px;
box-shadow: 0 1px 3px rgba(0,0,0,0.45);
}
.map-blaze--kultura { background: var(--cat-kultura); }
.map-blaze--priroda { background: var(--cat-priroda); }
.map-blaze--archeologie { background: var(--cat-archeologie); }
.map-blaze--zabava { background: var(--cat-zabava); }
.map-blaze--zakladna { background: var(--cat-zakladna); }
.map-blaze--base {
width: 22px; height: 22px; border-radius: 50%;
box-shadow: 0 0 0 4px rgba(207,59,46,0.28), 0 1px 4px rgba(0,0,0,0.5);
}
/* legenda */
.legend {
background: var(--card); padding: 10px 12px; border-radius: var(--r);
box-shadow: 0 1px 6px rgba(0,0,0,0.18); font-size: 13px; line-height: 1.7;
}
.legend b { font-family: var(--mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); display: block; margin-bottom: 5px; }
.legend .row { display: flex; align-items: center; gap: 8px; }
.legend i { width: 13px; height: 13px; border: 2px solid #fff; border-radius: 3px; box-shadow: 0 0 0 1px var(--line); }
/* ---------- nav ---------- */
.toc {
position: sticky; top: 0; z-index: 500;
background: rgba(238,241,234,0.94);
backdrop-filter: blur(6px);
border-bottom: 1px solid var(--line);
}
.toc .wrap { display: flex; flex-wrap: wrap; gap: 4px 18px; padding: 11px 22px; }
.toc a {
font-family: var(--mono); font-size: 12.5px; letter-spacing: 0.04em;
text-decoration: none; color: var(--ink-soft); padding: 4px 0;
border-bottom: 2px solid transparent;
}
.toc a:hover { color: var(--green-deep); border-color: var(--green); }
/* ---------- sections ---------- */
section { padding: 46px 0; border-top: 1px solid var(--line); }
section:first-of-type { border-top: none; }
.sec-head { display: flex; align-items: baseline; gap: 14px; margin-bottom: 6px; }
.sec-num {
font-family: var(--mono); font-size: 13px; color: var(--green);
border: 1.5px solid var(--green); border-radius: 3px; padding: 2px 7px; flex: none;
}
h2 {
font-family: var(--disp); font-weight: 700; font-size: clamp(24px, 3.4vw, 34px);
line-height: 1.1; margin: 0; letter-spacing: -0.01em;
}
h3 {
font-family: var(--disp); font-weight: 600; font-size: 20px;
margin: 30px 0 8px; color: var(--green-deep);
}
h4 { font-family: var(--disp); font-weight: 600; font-size: 16px; margin: 18px 0 4px; }
p { margin: 0 0 14px; }
.lead { font-size: 18.5px; }
/* shrnutí (terénní pole) */
.summary {
background: var(--card); border-left: 4px solid var(--green);
border-radius: 0 var(--r) var(--r) 0;
padding: 16px 18px; margin: 18px 0 28px;
box-shadow: 0 1px 4px rgba(21,35,29,0.06);
}
.summary .eyebrow { color: var(--green); margin-bottom: 6px; }
.summary p { margin: 0; }
/* fakta strip */
.facts {
display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px;
background: var(--line); border: 1px solid var(--line); border-radius: var(--r);
overflow: hidden; margin: 0 0 6px;
}
.facts div { background: var(--paper); padding: 14px 16px; }
.facts .n { font-family: var(--disp); font-weight: 700; font-size: 24px; color: var(--green-deep); }
.facts .l { font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
/* karty cílů */
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; margin-top: 10px; }
.card {
background: var(--card); border: 1px solid var(--line); border-left: 5px solid var(--muted);
border-radius: var(--r); padding: 15px 16px; cursor: pointer;
transition: transform 0.16s ease, box-shadow 0.16s ease;
}
.card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(21,35,29,0.12); }
.card--kultura { border-left-color: var(--cat-kultura); }
.card--priroda { border-left-color: var(--cat-priroda); }
.card--archeologie { border-left-color: var(--cat-archeologie); }
.card--zabava { border-left-color: var(--cat-zabava); }
.card--zakladna { border-left-color: var(--cat-zakladna); }
.card .c-top { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
.card .c-cat { font-family: var(--mono); font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }
.card .c-dist { font-family: var(--mono); font-size: 12px; color: var(--green); white-space: nowrap; }
.card h4 { margin: 5px 0 7px; }
.card .c-desc { font-size: 14.5px; color: #3a463f; margin: 0 0 10px; }
.card .c-coords { font-family: var(--mono); font-size: 11.5px; color: var(--muted); }
.card a.c-src { font-family: var(--mono); font-size: 12px; }
/* odkazy / zdroje */
.linklist { columns: 2; column-gap: 34px; font-size: 14.5px; }
.linklist h4 { break-after: avoid; }
.linklist ul { margin: 0 0 14px; padding-left: 18px; }
.linklist li { margin-bottom: 5px; break-inside: avoid; }
@media (max-width: 620px) { .linklist { columns: 1; } }
/* upozornění */
.note {
background: #fff8e9; border: 1px solid #e6cf9b; border-radius: var(--r);
padding: 16px 18px;
}
.note ul { margin: 8px 0 0; padding-left: 18px; }
.note li { margin-bottom: 6px; }
/* footer */
footer {
background: var(--ink); color: #9fc3ad; padding: 26px 0; margin-top: 10px;
font-family: var(--mono); font-size: 12.5px; border-top: 4px solid var(--green);
}
footer a { color: #cfe3d6; }
@media (max-width: 700px) {
.facts { grid-template-columns: repeat(2, 1fr); }
body { font-size: 16px; }
}