Basemap tiles
tiles.eocube.ro serves an OpenStreetMap basemap of Europe as vector tiles, with ready-made map styles. EOCube.ro renders and hosts it, and every map on the platform uses it. You can use it in your own web pages, notebooks and GIS projects: no account and no API key.
The map above is the basemap with the platform’s newest summer mosaic over it: cloudless Sentinel-2 imagery of the whole area of interest, served as XYZ tiles. Every season is listed on the seasonal mosaics page.
Attribution
The basemap is built from OpenStreetMap data, published under the Open Database License (ODbL)
© OpenStreetMap contributors · Protomaps · Map rendering: EOCube.ro<a href="https://www.openstreetmap.org/copyright">© OpenStreetMap contributors</a> ·
<a href="https://protomaps.com">Protomaps</a> ·
Map rendering: <a href="https://eocube.ro/en/services/tiles/">EOCube.ro</a>MapLibre and OpenLayers show the OpenStreetMap credit from the style on their own; add the EOCube.ro rendering credit next to it. When the map also shows a seasonal mosaic, add the imagery credit from its STAC item (the attribution property), for example Contains modified Copernicus Sentinel data 2026 · EOCube.ro.
Endpoints
| Use | Address |
|---|---|
| Map style (MapLibre GL, OpenLayers with ol-mapbox-style) | https://tiles.eocube.ro/assets/styles/<style>.json |
| Map style for QGIS (also for QMS) | https://tiles.eocube.ro/assets/styles/<style>.qgis.json |
| The same style, labels in Romanian | https://tiles.eocube.ro/assets/styles/<style>.ro.json |
| TileJSON | https://tiles.eocube.ro/europe.json |
Vector tiles (Mapbox Vector Tiles, {z}/{x}/{y}) | https://tiles.eocube.ro/europe/{z}/{x}/{y}.mvt |
| The whole archive, for offline and desktop use (PMTiles, ~48 GB) | https://tiles.eocube.ro/europe.pmtiles |
| Published version and OpenStreetMap snapshot date | https://storage.svc.uvt-01.eocube.ro/eocube-public-basemap/europe/manifest.json |
Styles: light, dark, grayscale, white and black. Pick grayscale (or black on a dark page) under thematic data, so your colours are the only colours on the map.
Technical details:
- Coverage Europe; projection Web Mercator (EPSG:3857); zoom 0–15 (clients overzoom beyond 15, street-level detail ends there).
- Schema Protomaps basemap
(v4), built from OpenStreetMap and Natural Earth; refreshed from a new OpenStreetMap snapshot about once a month (see the manifest). - Styles, sprites and fonts are served from the same host, with CORS open to every origin.
Examples
MapLibre GL JS
The basemap, with the newest summer mosaic inserted under the labels. The mosaic’s tile URL comes from the catalog: it changes when a season is reprocessed, so look it up rather than copying it.
const map = new maplibregl.Map({
container: 'map',
style: 'https://tiles.eocube.ro/assets/styles/light.json',
center: [25.0, 45.9],
zoom: 6
});
map.addControl(new maplibregl.AttributionControl({ customAttribution: 'Map rendering: EOCube.ro' }));
// The newest AOI-wide summer mosaic (JJA), from the STAC catalog.
const search = 'https://stac.eocube.ro/search?' + new URLSearchParams({
collections: 'sentinel-2-l2a-mosaic-seasonal',
'filter-lang': 'cql2-text',
filter: `"eocube:mosaic_scope" = 'aoi' AND id LIKE '%-JJA-%'`,
sortby: '-start_datetime',
limit: '1'
});
map.on('load', async () => {
const item = (await (await fetch(search)).json()).features[0];
const xyz = item.links.find((l) => l.rel === 'xyz').href; // TiTiler, true colour
map.addSource('mosaic', { type: 'raster', tiles: [xyz], tileSize: 256, maxzoom: 13,
attribution: item.properties.attribution });
const firstLabels = map.getStyle().layers.find((l) => l.type === 'symbol')?.id;
map.addLayer({ id: 'mosaic', type: 'raster', source: 'mosaic' }, firstLabels);
});OpenLayers
import Map from 'ol/Map.js';
import View from 'ol/View.js';
import VectorTileLayer from 'ol/layer/VectorTile.js';
import { fromLonLat } from 'ol/proj.js';
import { applyStyle } from 'ol-mapbox-style';
const basemap = new VectorTileLayer({ declutter: true });
applyStyle(basemap, 'https://tiles.eocube.ro/assets/styles/light.json');
new Map({
target: 'map',
layers: [basemap],
view: new View({ center: fromLonLat([25.0, 45.9]), zoom: 6 })
});ol-mapbox-style draws labels with web fonts: declare the Noto Sans faces the styles name on your page (or rewrite them to fonts you already serve), otherwise it loads them from a public font CDN.
QGIS
- Layer ▸ Add Layer ▸ Add Vector Tile Layer…, then New ▸ New Generic Connection.
- URL
https://tiles.eocube.ro/europe/{z}/{x}/{y}.mvt, minimum zoom0, maximum zoom15, style URLhttps://tiles.eocube.ro/assets/styles/light.qgis.json. The.qgis.jsonstyles are the same maps written in the subset QGIS can read; with the regular styles QGIS shows no place names. - Add the attribution above to your map layouts.
For offline work, open the PMTiles archive instead (recent QGIS versions read PMTiles directly).
Fair use
- Tiles are public and free, and the service is rate-limited per IP address; an ordinary map view stays far below the limit.
- Do not bulk-download tiles: to use the basemap offline or on your own server, download the PMTiles archive, which is the same data in one file.
- The service runs on research infrastructure with no availability guarantee. For operational or high-traffic use, write to support@eocube.ro.