When to use vector tiles over raster
The practical decision matrix — dynamic styling, offline caching, interactive querying — and where raster still wins.
A reference for the engineers who own the path from raw spatial data to the pixels in a user's browser: converting GeoJSON and GeoParquet to optimized PMTiles and MBTiles, tuning Tippecanoe for production, and serving tiles through a CDN that actually caches.
Four connected tracks — format fundamentals, automated generation, map styling, and tile serving & CDN delivery — each with focused sub-topics and deep-dive pages that answer concrete engineering questions.
These pages answer the questions that come up on day one of a vector-tile project and again on day one hundred.
The practical decision matrix — dynamic styling, offline caching, interactive querying — and where raster still wins.
The minimum viable flag set for shipping a first tileset: zoom range, attribute filtering, and size-budget controls.
JSON contract patterns, source declarations, and layer ordering that keep styles and tilesets in lock-step as schemas evolve.
The decision that shapes your whole serving stack — a static archive on object storage versus a tile server in front of a CDN.
Each section collects architectural patterns, CLI references, validation gates, and operational guardrails across its sub-topics.
Tile coordinates, MVT/protobuf encoding, MBTiles vs PMTiles storage, and zoom-level optimization for production delivery.
Tippecanoe CLI flags, GeoParquet ingestion, geometry simplification and attribute filtering for repeatable CI/CD tile builds.
MapLibre GL JSON contracts, dynamic attribute binding, theme inheritance and validation that keeps tiles and styles in lock-step.
Tile servers, PMTiles range requests from R2/S3, cache-control headers, versioned URL rotation, and CDN invalidation for fast delivery.