Vector Tile API

Pokud jste se rozhodli použít vektorové dlaždice ve svých mapových projektech, pak jste na správném místě. Zde se dozvíte, jak snadno implementovat vektorové dlaždice pomocí nejpopulárnějších knihoven jako Maplibre a OpenLayers.

Styly

S naší službou vektorových dlaždic máte možnost vybrat si styly připravené pro různé případy použití, a tím výrazně zlepšit vizuální atraktivitu a také uživatelský zážitek vašich uživatelů.

V tabulce níže je aktuální seznam stylů a jejich IDs.

Jméno styluID stylu
CZE základnícze-basic
CZE utlumenýcze-faded
CZE černobílýcze-grayscale
CZE-SVK základnícze-svk-basic

 

Typy stylu

URL stylu

Konstrukce URL stylu vypadá následovně:


https://api.ceda.cz/vmt/styles/{id-stylu}/{typ-stylu}?token={váš token}

Atributace

Atributace je informace o autorských právech, která musí být uvedena na každé mapě používající mapové styly a data od CEDA Maps a.s.. Obvykle se nachází v pravém dolním rohu mapy (viz. obrázek). Pro některé mapové knihovny je nutné přidat atributaci ručně. Níže naleznete návody, jak na to.

Pro OpenLayers


var layer = new ol.layer.Tile({
  source: new ol.source.TileJSON({
    attributions: [new ol.Attribution({
      html: "<a href="https://www.ceda.cz/" target="_blank" title="CEDA" aria-label="CEDA" role="listitem">&copy; 2023  <img style="top: 2px; position: relative;" height="14px" src="https://www.ceda.cz/fileadmin/themes/default/img/logo/CEDA_Logo_zakladni_varianta.svg"></a>  <a href="https://www.ceda.cz/licencni-podminky/copyright-ceda" target="_blank">Zdroje dat: CEDA, TomTom, ČUZK, OpenStreetMap</a>"
    })]
  })
});

Pro Leaflet


var attribution = L.control.attribution().addTo(map);
attribution.addAttribution('<a href="https://www.ceda.cz/" target="_blank" title="CEDA" aria-label="CEDA" role="listitem">© 2023  <img style="top: 2px; position: relative;" height="14px" src="https://www.ceda.cz/fileadmin/themes/default/img/logo/CEDA_Logo_zakladni_varianta.svg"></a>  <a href="https://www.ceda.cz/licencni-podminky/copyright-ceda" target="_blank">Zdroje dat: CEDA, TomTom, ČUZK, OpenStreetMap</a>');

Vykreslování mapy v Maplibre GL

Vykreslování map pomocí Maplibre GL knihovny poskytuje snadnou a efektivní možnost pro tvorbu interaktivních map. Tuto knihovnu lze snadno implementovat do projektů a využít tak jejích funkcí pro tvorbu atraktivních a funkčních map.

Ukázka implementace dlaždic xyz


<html>

<head>
    <script src='https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.js'></script>
    <link href='https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.css' rel='stylesheet' />
    <style>
        #map {
            width: 100%;
            height: 100%;
        }
    </style>
</head>

<body>
    <div id="map"></div>
    <script>

        var map = new maplibregl.Map({
            container: 'map',
            style: 'https://api.ceda.cz/vmt/styles/cze-svk-basic/style-xyz?token=VAS_TOKEN',
            center: [14.25, 50.1],
            zoom: 12
        });

    </script>
</body>

</html>

Ukázka implementace dlaždic pmtiles


<html>

<head>
    <script src='https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.js'></script>
    <link href='https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.css' rel='stylesheet' />
    <script
        src="https://api.ceda.cz/vmt/ceda-pmtiles@2.4.0.js?token=VAS_TOKEN"></script>
    <style>
        #map {
            width: 100%;
            height: 100%;
        }
    </style>
</head>

<body>
    <div id="map"></div>
    <script>

        var protocol = new pmtiles.Protocol();
        maplibregl.addProtocol("pmtiles", protocol.tile);

        var map = new maplibregl.Map({
            container: 'map',
            center: [16.6142, 49.18814],
            zoom: 15,
            style: "https://api.ceda.cz/vmt/styles/cze-basic/style?token=VAS_TOKEN"
        });

    </script>
</body>

</html>

Vykreslování mapy v OpenLayers

Použití OpenLayers pro zobrazení vektorových mapových dat.

Ukázka implementace

1) Ukázka kódu Javascriptu pro vytvoření jednoduché mapy


import 'ol/ol.css';
import FullScreen from 'ol/control/FullScreen';
import olms from 'ol-mapbox-style';

olms(
  'map',
  'https://api.ceda.cz/vmt/styles/cze-svk-basic/style-xyz?token=VAS_TOKEN'
).then(function (map) {
  map.addControl(new FullScreen());
});

2) Ukázka kódu pro index.html soubor


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Vector tiles created from a Mapbox Style object</title>
    <!-- Pointer events polyfill for old browsers, see https://caniuse.com/#feat=pointer -->
    <script src="https://unpkg.com/elm-pep@1.0.6/dist/elm-pep.js"></script>
    <!-- The lines below are only needed for old environments like Internet Explorer and Android 4.x -->
    <script src="https://cdn.polyfill.io/v3/polyfill.min.js?features=fetch,requestAnimationFrame,Element.prototype.classList,TextDecoder"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/3.18.3/minified.js"></script>
    <style>
      .map {
        width: 100%;
        height:400px;
      }
      .map .ol-rotate {
        left: .5em;
        bottom: .5em;
        top: auto;
        right: auto;
      }
      .map:-webkit-full-screen {
        height: 100%;
        margin: 0;
      }
      .map:-ms-fullscreen {
        height: 100%;
      }
      .map:fullscreen {
        height: 100%;
      }    </style>
  </head>
  <body>
    <div id="map" class="map"></div>
    <script src="main.js"></script>
  </body>
</html>

3) Ukázka souboru package.json


{
  "name": "project-name",
  "dependencies": {
    "ol": "7.2.2",
    "ol-mapbox-style": "^9.2.0"
  },
  "devDependencies": {
    "vite": "^3.2.3"
  },
  "scripts": {
    "start": "vite",
    "build": "vite build"
  }
}

Vykreslování mapy v Leafletu

Pro knihovnu Leaflet je nutné použít plugin leaflet-maplibre-gl.js, případně plugin leaflet-mapbox-gl.js.


<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.2/dist/leaflet.css" />
  <script src="https://unpkg.com/leaflet@1.9.2/dist/leaflet.js"></script>
  
  <!-- Add maplibre-gl-js -->
  <link href='https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.css' rel='stylesheet' />
  <script src='https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.js'></script>
  
  <!-- Add maplibre-gl-leaflet -->
  <script src="https://unpkg.com/@maplibre/maplibre-gl-leaflet@0.0.17/leaflet-maplibre-gl.js"></script>
  <style>
    html, body, #map {
      width: 100%;
      height: 100%;
      margin: 0;
    }
  </style>
</head>
<body>
  <div id="map"></div>
  <script>
    const map = L.map('map').setView([49.8025412, 15.4907228], 8);
    // Don't forget to replace <token> by your real access token!
    var gl = L.maplibreGL({
      style: 'https://api.ceda.cz/vmt/styles/cze-svk-basic-sync/style-xyz?token=<token>'
    }).addTo(map);
  </script>
</body>
</html>