Unmap

Overview

unmap is a Canadian-first, privacy-first maps API. One key covers three services:

  • Maps are vector basemap tiles and ready-made styles, served from R2 at the edge (live today).
  • Geocoding is full-text search, type-ahead autocomplete, and reverse lookup, with first-class French labels (in preview).
  • Routing is turn-by-turn routes and isochrones over the Canadian road graph (in preview).

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. | | flavor | string | Optional. light or dark cartography. | | center | [number, number] | Optional. [lng, lat]. | | zoom | number | Optional initial zoom. |

The instance exposes:

  • .map is the MapLibre GL map (only when a container was given). Mapbox-GL-JS-compatible surface.
  • .geocoder is search(q), autocomplete(q), reverse(lng, lat).
  • .router is route(from, to), isochrone(center, { minutes }).

Demo styles

The three launch styles cover the country from prairie to Arctic:

  • calgary for Calgary, Alberta
  • montreal for Montréal, Québec (French-first labels)
  • iqaluit for Iqaluit, Nunavut

Why unmap

  • Untracked. Keys are metered, people are not.
  • Unlocked. Permissive caching, no expiry clock on what you cache.
  • Unbundled. One key across maps, geocoding, and routing.
  • Canadian residency. Requests stay on Canadian infrastructure.

Ready to render something? Head to the Quickstart.