Mapy do vlastního projektu, rychle
Hotové ukázky kódu, které stačí zkopírovat, prompty pro AI vázané na konkrétní český zdroj dat a strojově čitelný katalog, ze kterého si nástroj nebo model stáhne aktuální URL a parametry.
Ukázky kódu
Funkční základ pro nejčastější úlohy. Knihovny se načítají z CDN, takže stačí vložit do HTML a otevřít v prohlížeči.
<!doctype html>
<html lang="cs">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<style> #map { height: 480px; } </style>
</head>
<body>
<div id="map"></div>
<script>
const map = L.map('map').setView([49.82, 15.47], 7); // stred CR
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '(c) prispevatele OpenStreetMap'
}).addTo(map);
L.marker([50.0755, 14.4378]).addTo(map).bindPopup('Praha');
</script>
</body>
</html>
<!-- Pozn.: oficialni OSM dlazdice jsou jen na vyvoj, ne do produkce. -->// Skutecny letecky snimek CR jako podkladova vrstva pres WMS.
// Nazev vrstvy si over pres GetCapabilities dane sluzby.
L.tileLayer.wms(
'https://geoportal.cuzk.gov.cz/WMS_ORTOFOTO_PUB/WMService.aspx',
{
layers: 'GR_ORTFOTORGB',
format: 'image/png',
transparent: false,
attribution: '(c) CUZK'
}
).addTo(map);<link href="https://unpkg.com/maplibre-gl/dist/maplibre-gl.css" rel="stylesheet" />
<script src="https://unpkg.com/maplibre-gl/dist/maplibre-gl.js"></script>
<div id="map" style="height:480px"></div>
<script>
const map = new maplibregl.Map({
container: 'map',
style: 'https://demotiles.maplibre.org/style.json', // funkcni demo styl
center: [15.47, 49.82],
zoom: 6
});
map.addControl(new maplibregl.NavigationControl());
// Pro vlastni podklad z PMTiles (viz navod o MapLibre):
// const p = new pmtiles.Protocol();
// maplibregl.addProtocol('pmtiles', p.tile);
// source: { type: 'vector', url: 'pmtiles://https://VAS-BUCKET/cz.pmtiles' }
</script>// GeoJSON musi byt ve WGS84 (EPSG:4326).
fetch('/data/chranena-uzemi.geojson')
.then(r => r.json())
.then(geojson => {
L.geoJSON(geojson, {
style: { color: '#2f8f5b', weight: 1, fillOpacity: 0.2 },
onEachFeature: (f, layer) =>
layer.bindPopup(f.properties.nazev || 'Bez nazvu')
}).addTo(map);
});Delší výklad (dlaždice, PostGIS, reprojekce) je v sekci Jak na to a v návodech.
Testovací prompty pro AI
Krátká zadání, která dáte modelu (Claude a spol.) a on vytvoří jednoduché demo nad konkrétním českým zdrojem. Zkopírujte, vložte, upravte podle sebe.
Leaflet + ortofoto ČÚZK
Vytvoř jednostránkovou HTML s knihovnou Leaflet z CDN. Zobraz mapu ČR vycentrovanou na lat 49.82, lon 15.47, zoom 7. Jako podklad přidej ortofoto ČÚZK přes WMS: endpoint https://geoportal.cuzk.gov.cz/WMS_ORTOFOTO_PUB/WMService.aspx, vrstva GR_ORTFOTORGB, formát image/png, atribuce (c) ČÚZK. Vše v jednom souboru.
Zdroj: Ortofoto ČRMapLibre + vlastní podklad
Vytvoř HTML stránku s MapLibre GL JS z CDN, která zobrazí interaktivní mapu se stylem https://demotiles.maplibre.org/style.json vycentrovanou na Česko (lon 15.47, lat 49.82, zoom 6) a ovládacím prvkem zoomu. Přidej zakomentovaný příklad, jak místo demo stylu použít vlastní PMTiles přes protokol pmtiles://.
Zdroj: Podkladové dlaždiceChráněná území z AOPK
Napiš JavaScript pro Leaflet, který načte chráněná území z ArcGIS REST služby AOPK a vykreslí je jako polygony. Endpoint https://gis.nature.cz/arcgis/rest/services/Aplikace/Opendata/MapServer s parametrem f=geojson. Obarvi polygony zelenou s průhledností 0.2 a přidej popup s názvem území. Data jsou ve WGS84.
Zdroj: Chráněná území (AOPK)Je bod v záplavovém území?
Mám v PostGIS tabulku zaplavy_q100 se sloupcem geom geometry(MultiPolygon,4326). Napiš SQL dotaz a k němu malý Node.js endpoint (Express), který přijme lat a lon a vrátí JSON s příznakem, jestli bod leží v záplavovém území. Použij ST_Contains a předpokládej prostorový index.
Zdroj: Záplavová územíDemo přímo z katalogu Xmap
Stáhni https://xmap.cz/catalog.json, najdi zdroj podle klíče slug (například 'ortofoto') a z jeho polí services a url vytvoř funkční Leaflet demo v jednom HTML souboru. Vždy respektuj licenci uvedenou u zdroje v poli license_note.
Zdroj: Katalog / NKODKatalog jako data
Celý katalog je dostupný strojově na xmap.cz/catalog.json. U každého zdroje najdete aktuální url, download_url, formats, license, crs a pole services s endpointy. Hodí se pro vlastní nástroje i pro to, aby si AI model stáhl přesné URL a nevymýšlel si je.
- Formát JSON, jeden soubor, bez klíče a limitů.
- Klíč
slugje stabilní identifikátor zdroje. - Odkaz
pagevede na lidsky čitelný detail zdroje na webu.
Chystáme i MCP server, přes který si model katalog prohledá a vytáhne zdroj nebo hotový prompt jako nástroj. Máte na to názor nebo konkrétní potřebu? Napište na [email protected].
// Aktualni katalog zdroju jako JSON
const res = await fetch('https://xmap.cz/catalog.json');
const catalog = await res.json();
// najdi konkretni zdroj
const ortofoto = catalog.sources.find(s => s.slug === 'ortofoto');
console.log(ortofoto.url, ortofoto.formats, ortofoto.license_label);
// vsechny zdroje s WMS sluzbou
const wms = catalog.sources.filter(s => s.formats.includes('WMS'));