Maps & vector tiles
Every polygon and line layer is published as a PMTiles archive: a single file of vector tiles served over HTTP range requests. No tile server to run.
Tile URLs
GET /layers returns a tiles_url for every tiled layer. URLs are signed for your key and valid for 24 hours:
{
"id": "mpzp_zones",
"name": "Local zoning plan (MPZP) zones",
"category": "planning",
"coverage": "partial",
"tiles_url": "https://tiles.zonio.tech/v1/mpzp_zones.pmtiles?sig=…"
}MapLibre
import maplibregl from 'maplibre-gl'
import { Protocol } from 'pmtiles'
maplibregl.addProtocol('pmtiles', new Protocol().tile)
const { tiles_url } = await fetch('/api/zonio/layers/mpzp_zones').then((r) => r.json()) // via your backend
const map = new maplibregl.Map({
container: 'map',
style: 'https://tiles.openfreemap.org/styles/positron',
center: [19.94, 50.06],
zoom: 13,
})
map.on('load', () => {
map.addSource('mpzp', { type: 'vector', url: `pmtiles://${tiles_url}` })
map.addLayer({
id: 'mpzp-fill',
type: 'fill',
source: 'mpzp',
'source-layer': 'mpzp_zones',
paint: {
'fill-color': ['match', ['get', 'category'],
'residential_single_family', '#f6c85f',
'residential_multi_family', '#e8833a',
'industrial', '#9b59b6',
'green', '#6fbf73',
'#cccccc'],
'fill-opacity': 0.5,
},
})
})Tiled layers
Parcels, MPZP zones, Plan Ogólny zones, Studium zones, environmental layers, buildings, roads, transit stops, contours, grid capacity, air-quality stations, aviation obstacle surfaces, airspace, KOWR land, mining areas and forest stands. Orthophoto and hillshade are proxied from GUGiK WMS. Each link opens the layer's page on zonio.tech with a preview of how it looks on the map. See Layers.
Link to Zonio
Want to see the styling before you build? Every layer is live in the Zonio app; the layer atlas has a screenshot of each one. For the legal side of maps used in design work, see map for project purposes.
Every parcel has a shareable map page: https://app.zonio.tech/p/<url-encoded parcel id>. MCP tool results include it as map_url.