Overview
unmap is a Canadian-first, privacy-first maps API. One key covers three services:
- Tiles — vector basemap tiles and ready-made styles, served from R2 at the edge.
- Geocoding — full-text search, type-ahead autocomplete, and reverse lookup, with first-class French labels.
- Routing — turn-by-turn routes and isochrones over the Canadian road graph.
The design goal is a time to first Hello World under 60 seconds, and two to three lines of code where the incumbents want twenty.
One key, the whole platform
The @unmap/sdk package unifies everything behind a single Stripe-style key (um_live_... in production, um_test_... for demos). Construct it once:
import { Unmap } from '@unmap/sdk'
const unmap = new Unmap({ key: 'um_live_...' })
await unmap.geocoder.search('Calgary Tower')
await unmap.router.route([-114.07, 51.05], [-113.99, 51.05])
Pass a container and you also get a rendered map:
const map = new Unmap({
key: 'um_live_...',
container: '#map',
center: [-114.07, 51.05],
})
map.map // the underlying MapLibre GL map
map.geocoder // search / autocomplete / reverse
map.router // route / isochrone
The API surface
new Unmap(options) accepts:
| Option | Type | Notes |
|---|---|---|
key | string | Required. Your um_live_ or um_test_ key. |
gateway | string | Optional. Override the API base URL. |
container | string | HTMLElement | Optional. If set, a map is mounted here. |
style | string | A demo city (calgary, montreal, iqaluit) or a style URL. |
center | [number, number] | Optional. [lng, lat]. |
zoom | number | Optional initial zoom. |
The instance exposes:
.map— the MapLibre GL map (only when acontainerwas given). Mapbox-GL-JS-compatible surface..geocoder—search(q),autocomplete(q),reverse(lng, lat)..router—route(from, to),isochrone(center, { minutes }).
Demo cities
The three launch styles cover the country from prairie to Arctic:
calgary— Calgary, Albertamontreal— Montréal, Québec (French-first labels)iqaluit— Iqaluit, Nunavut
Why unmap
- Untracked. Keys are metered, people are not.
- Unlocked. Permissive caching, no expiry clock on stored tiles.
- Unbundled. One key across tiles, geocoding, and routing.
- Canadian residency. Requests stay on North American infrastructure.
Ready to render something? Head to the Quickstart.