maps.guru
Map Integration

Tile Rendering

How vector tile rendering works in maps.guru.

maps.guru serves vector tiles in the Mapbox Vector Tile (MVT) format using PMTiles archives stored on Cloudflare R2.

How Tile Loading Works

When you use a maps.guru style URL, vector tiles are loaded automatically. The style JSON returned by the API contains all the necessary tile, sprite, and glyph URLs — already configured with your API key.

const map = new maplibregl.Map({
  container: 'map',
  style: 'https://maps.guru/api/v1/styles/standard/light/style.json?key=YOUR_KEY'
});

The tile URL format used internally follows the standard {z}/{x}/{y} pattern:

ParameterDescription
sourceTile source name (e.g., planet-vector)
zZoom level (0-15)
xTile column
yTile row

Available Sources

SourceDescriptionMax Zoom
planet-vectorFull planet vector tiles with OpenMapTiles schema15

Vector Tile Layers

The planet-vector source includes these layers:

LayerDescriptionMin Zoom
waterOceans, lakes, rivers0
landcoverForests, parks, farmland0
boundaryCountry, state, admin boundaries0
transportationRoads, railways, paths4
buildingBuilding footprints13
placeCity, town, village labels2
poiPoints of interest12

Caching

Tiles are cached at multiple levels for optimal performance:

LayerTTLEffect
CDN (Cloudflare)1 weekTiles served from nearest edge
PMTiles header1 hourAvoids re-reading tile index
In-memoryPer instanceFaster directory lookups

Typical latency:

  • CDN hit: ~70ms
  • CDN miss: ~200ms (fetches from R2)
  • Cold start: ~300-400ms

Fonts and Sprites

Font glyphs and sprite sheets are static assets served publicly — no API key is required. They are included in the style JSON automatically when you use a style URL.

These assets have a 1-year immutable cache and are not counted toward your usage quota.

Copyright © 2026