Skip to content

Treaty overlay

treaties draws the Crown-Indigenous Relations and Northern Affairs Canada (CIRNAC) historic and modern treaty representations on any style, and a click or a typed coordinate lists every treaty representation that covers that point. The data is open government data under the Open Government Licence - Canada. It is treaty context: not traditional territories, not reserves, and not a land acknowledgement.

import { Unmap, createTreatyOverlay } from "@unmap/sdk";
 
const unmap = new Unmap({
  key: "um_live_...",
  container: "map",
  style: "muted",
  overlays: ["treaties"],
  center: [-106, 55],
  zoom: 4,
});
 
const treaties = createTreatyOverlay(unmap.map!, unmap.geocoder, {
  lang: "en",
  onSelect: ({ context }) => {
    if (context.status === "ok") {
      for (const treaty of context.matches) console.log(treaty.name, treaty.source_url);
    }
  },
});
 
treaties.setVisibility({ modern: false });

?overlays=treaties on /styles/{style}.json composes the same layers. The overlay is core: no add-on.

What the map shows

  • Historic treaties have a dashed outline, modern treaties a solid one. The difference is the line, not the colour, so it survives every style, mode and theme.
  • Fills are faint on purpose. Where representations overlap, the tones add up, so an overlap looks like an overlap rather than one treaty covering another.
  • There are no labels. Names come from the details for the point you pick.
  • Tiles are simplified for display. A small representation can disappear at low zoom; the details lookup below never loses it.

Details for a point

createTreatyOverlay answers a map click, or lookupAt([lng, lat]) for a point from a search result or a coordinate someone typed, with the geocoder's full-resolution lookup (GET /geocode/reverse?include=treaties). The answer is for that exact coordinate, and it is pinned to the dataset version drawn on the map, so the details always describe the shapes on screen.

  • status: "ok" with matches lists every representation covering the point. Overlaps are all listed, historic before modern. hidden names categories you have switched off on the map; their matches are still listed.
  • status: "ok" with no matches: No treaty record found in this dataset. This does not determine Indigenous rights or whether land is unceded.
  • status: "unavailable": Treaty context is temporarily unavailable.
  • An error with code: "treaties_version_not_found" means the version on screen has been retired. Reload the map; the helper never shows newer details against older shapes.
  • Rapid clicks keep only the latest answer, and nothing is reported after destroy().

Always show the notice with the details: Source representations are approximate or illustrative. Coverage is incomplete; consult the linked sources. Each match carries source_url, the publisher's dataset page.

Billing

Overlay tiles meter like every catalog overlay. Each details lookup is one geocode call. Creating the helper, toggling a category or changing style makes no request.

Not included

Traditional territories, reserves (see aboriginal-lands in the layer catalog), the Treaties of Peace and Neutrality (no mapped geography), Indigenous agreements, and two modern treaties whose published geometry is invalid (the Labrador Inuit Land Claims Agreement and the Tla'amin Nation Final Agreement). See Geocoding for include=treaties.