Build on the map.

Put a map in your page that your page can steer, and take the data IntMap is built from — each dataset with the licence its source states and what that licence asks of you.

Free. No account and no key: the API is plain files on the same site as the map.

Steer an embedded map

Import the client and mount a map. Your page can then move it to a date or a place, show any share link, and hear where the reader has taken it.

<div id="map"></div>
<button id="to-1939" type="button">1 September 1939</button>
<script type="module">
  import { mount } from 'https://rwmqx7dwb5-arch.github.io/IntMap/js/embed-client.js';
  const map = mount('#map', { hash: '#v=22.0000,48.5000,3.30,0,0,f&tt=1914-06-27', height: 450 });
  await map.ready;
  document.querySelector('#to-1939').onclick = () => map.setTime('1939-09-01');
  map.on('state', (s) => console.log(s.state.view, s.state.time, s.link));
</script>

What your page can send

MessageFieldsWhat it does
get{}Reply with the state the frame is in now.
state{ hash }Show the map a share-link fragment (#v=…) describes — layers, clock, comparison, caption and all.
view{ lng, lat, zoom, bearing?, pitch? }Move the camera; everything else stays.
time{ at: 'YYYY-MM-DD' | year | 'live' }Set the clock to a date, or to 1 July of a year (astronomical numbering: 0 is 1 BC, -499 is 500 BC), or back to now.

What the map tells your page

MessageFieldsWhat it does
ready{ state, hash, link }The frame has applied the link it was opened with. Sent once.
state{ cause, state, hash, link }The map changed. cause says whether the reader moved it (reader) or a link or command did (restore).
reply{ id, ok, error?, state, hash, link }The answer to a command that carried an id.

The client is a convenience. The protocol is plain postMessage, so a page can also speak it directly:

const frame = document.querySelector('iframe');
const origin = new URL(frame.src).origin;
frame.contentWindow.postMessage(
  { protocol: 'intmap-embed', v: 1, type: 'view', id: '1', lng: 139.69, lat: 35.69, zoom: 9 },
  origin);
window.addEventListener('message', (e) => {
  if (e.source !== frame.contentWindow || e.origin !== origin) return;   // only the map you framed
  if (e.data && e.data.protocol === 'intmap-embed' && e.data.type === 'reply') console.log(e.data.ok, e.data.hash);
});

A command can only change what the frame shows, exactly as a share link can. The frame reports the map’s state — the same link its own “Open in IntMap” button carries — and nothing about the reader, and only to the page that framed it.

Embed a map →

Open data

The datasets the map draws, as files you can download, with no key and no rate limit beyond the web host’s. Every address below is a JSON file.

const catalog = await fetch('https://rwmqx7dwb5-arch.github.io/IntMap/api/v1/catalog.json').then((r) => r.json());
const japan = await fetch('https://rwmqx7dwb5-arch.github.io/IntMap/api/v1/countries/JPN.json').then((r) => r.json());
for (const d of catalog.datasets) if (d.terms.credit) console.log(d.id, d.credit.join(' · '));

A dataset is offered only when every source it comes from states a licence that permits redistribution. One that states none, or states terms that are not known to, is listed as not offered rather than offered quietly. Where a dataset combines sources, the strictest condition applies to the whole file.

The borders of a date, shape by shape

In the map, set the clock to a date and open Share, then Cite: it saves the borders drawn on that date as GeoJSON, the whole world or the view. Each feature names its record and row, its dates and who stated them, its identifiers and its licence, read from the catalogue above row by row — a shape whose terms are non-commercial is left out and the file names it, and a shape cut against one keeps its record without its outline.

The datasets, as this build of the site offers them

48 datasets offered for reuse · 50 withheld

DatasetLicenceRequiresSizeCredit to show
admin1-worldpublic domainnothing2.4 MBNatural Earth
airportsPublic domain
ODbL 1.0
credit · share-alike13 kBOurAirports
Country facts — mledoze/countries (capital, currency, languages, land borders, UN membership, demonym; ODbL 1.0, build time only)
border-coastpublic domainnothing1.2 MBNatural Earth
border-provenance-clioCC BY 4.0credit1.4 MBCliopatria — Seshat Global History Databank (CC BY 4.0)
border-provenance-ohmCC0 1.0nothing385 kBOpenHistoricalMap
coastlinepublic domainnothing255 kBNatural Earth
connection-ledgerIntMap — Personal & Research Use License (LICENSE)credit · non-commercial44 kBIntMap (scripts/outbound-hosts.json)
country-factsODbL 1.0
public domain
credit · share-alike65 kBmledoze/countries
IANA Time Zone Database
Natural Earth admin-0
cshapesCC BY-NC-SA 4.0
CC0 1.0
credit · share-alike · non-commercial13.7 MBCShapes 2.0 (Schvitz et al., ETH Zürich)
OpenHistoricalMap
fukushima-releaseCC-BY-3.0credit6 kBFukushima Daiichi release time series (JAEA, Katata et al. 2015, CC BY 3.0)
gazetteer-worldCC BY 4.0credit5.3 MBGeoNames
healthCC BY-NC-SA 3.0 IGO
CC BY 4.0
credit · share-alike · non-commercial33 kBWHO Global Health Observatory — UHC service coverage index & IHR SPAR (CC BY-NC-SA 3.0 IGO)
World Bank Open Data
hist-admin-edgesCC0 1.0nothing60 kBWikidata (CC0 1.0)
hist-admin-surveys-ncCC BY-NC-SA 4.0credit · share-alike · non-commercial2.4 MBHGIS de las Indias (Werner Stangl, University of Graz) — Territorial gazetteer for Spanish America, 1701-1808
hist-bordersCC0 1.0nothing34.0 MBOpenHistoricalMap
hist-borders-lateCC0 1.0
CC BY-NC-SA 4.0
credit · share-alike · non-commercial920 kBOpenHistoricalMap
CShapes 2.0 (Schvitz et al., ETH Zürich)
hist-citiesCC0 1.0 Universal
CC BY 3.0
credit1.6 MBOpenHistoricalMap contributors
Pleiades (pleiades.stoa.org) and its contributors
Wikidata
hist-clioCC BY 4.0
CC0 1.0
CC BY-NC-SA 4.0
credit · share-alike · non-commercial19.3 MBCliopatria — Seshat Global History Databank (CC BY 4.0)
OpenHistoricalMap
CShapes 2.0 (Schvitz et al., ETH Zürich)
hist-coast-snappublic domain
ODbL 1.0
credit · share-alike21.4 MBNatural Earth
Historical map coastline — OpenStreetMap land polygons, OpenStreetMap contributors (ODbL 1.0)
hist-coursesODbLcredit · share-alike335 kBHistorical boundary courses — OpenStreetMap contributors (ODbL 1.0), reviewed by IntMap
hist-era-spansCC0 1.0nothing53 kBWikidata (CC0 1.0)
hist-erasGPL-3.0credit · share-alike10.6 MBhistorical-basemaps (aourednik) — GPL-3.0
hist-eras-restGPL-3.0
CC0 1.0
CC BY 4.0
credit · share-alike8.5 MBhistorical-basemaps (aourednik) — GPL-3.0
OpenHistoricalMap
Cliopatria — Seshat Global History Databank (CC BY 4.0)
hist-placesCC BY 3.0credit1.3 MBPleiades — a gazetteer of past places (CC BY 3.0)
hist-urbanCC BY 4.0credit496 kBReba, Reitsma & Seto (2016) — historical urban populations, 3700 BC – AD 2000 (CC BY 4.0)
land-maskpublic domainnothing20 kBNatural Earth
languagepublic domain
CC BY 4.0
credit108 kBCIA World Factbook
Language identity, genealogical classification and endangerment status — Glottolog (CC BY 4.0)
language-treepublic domain
CC BY 4.0
credit727 kBCIA World Factbook
Language identity, genealogical classification and endangerment status — Glottolog (CC BY 4.0)
mobilityODbL 1.0
public domain
CC BY 4.0
credit · share-alike77 kBOpenFlights — airline route database (country-pair route counts for the pandemic simulator; snapshot of June 2014, no longer updated; ODbL 1.0)
OurAirports
World Bank Open Data
Country facts — mledoze/countries (capital, currency, languages, land borders, UN membership, demonym; ODbL 1.0, build time only)
ne-countries/ (4 files)public domainnothing3.8 MBNatural Earth
nppCC0-1.0nothing305 kBWikidata
ocean-currentsU.S. Government work — public domainnothing163 kBNOAA CoastWatch blended sea-surface geostrophic currents from satellite altimetry (0.25°, multi-mission: Sentinel-3A/B, CryoSat-2, Jason-2/3, SARAL)
NOAA NCEI blended sea-surface wind stress (0.25°, monthly, Version 2.0)
NOAA OISST v2.1 daily sea-surface temperature (0.25°, AVHRR-only, final)
ocean-currents-fieldU.S. Government work — public domainnothing887 kBNOAA CoastWatch blended sea-surface geostrophic currents from satellite altimetry (0.25°, multi-mission: Sentinel-3A/B, CryoSat-2, Jason-2/3, SARAL)
NOAA NCEI blended sea-surface wind stress (0.25°, monthly, Version 2.0)
NOAA OISST v2.1 daily sea-surface temperature (0.25°, AVHRR-only, final)
ocean-currents-monthsU.S. Government work — public domainnothing3.0 MBNOAA CoastWatch blended sea-surface geostrophic currents from satellite altimetry (0.25°, multi-mission: Sentinel-3A/B, CryoSat-2, Jason-2/3, SARAL)
NOAA NCEI blended sea-surface wind stress (0.25°, monthly, Version 2.0)
NOAA OISST v2.1 daily sea-surface temperature (0.25°, AVHRR-only, final)
offline-sourcesIntMap — Personal & Research Use License (LICENSE)credit · non-commercial3 kBIntMap (scripts/outbound-hosts.json)
on-this-dayCC BY-NC-SA 4.0credit · share-alike · non-commercial387 kBCShapes 2.0 (Schvitz et al., ETH Zürich)
osm-diploODbLcredit · share-alike1.9 MBDiplomatic missions — OpenStreetMap (amenity=embassy / office=diplomatic, Overpass API)
osm-spaceODbLcredit · share-alike1.1 MBSpaceports & satellite ground stations — OpenStreetMap (aeroway=spaceport, man_made=launch_pad/satellite_dish, Overpass API)
planet-namespublic domainnothing183 kBUSGS Gazetteer of Planetary Nomenclature
planets/ (9 files)CC BY 4.0credit5.4 MBSolar System Scope — planetary surface textures
polity-arcsCC BY 4.0
CC0 1.0
CC BY-NC-SA 4.0
GPL-3.0
credit · share-alike · non-commercial841 kBCliopatria — Seshat Global History Databank (CC BY 4.0)
OpenHistoricalMap
CShapes 2.0 (Schvitz et al., ETH Zürich)
aourednik/historical-basemaps
radiation-hindcastCC-BY-4.0credit161 kBFukushima Cs-137 deposition survey (MEXT/NRA via IRSN, CC BY 4.0)
religionpublic domainnothing60 kBCIA World Factbook
service-statusIntMap — Personal & Research Use License (LICENSE)credit · non-commercial55 kBIntMap (scripts/upstream-liveness.mjs, .github/workflows/atlas-eval.yml)
small-bodiesU.S. Government work — not subject to copyrightnothing267 kBNASA/JPL-Caltech — Small-Body Database
spacecraftU.S. Government work — not subject to copyrightnothing699 kBNASA/JPL-Caltech — Horizons
us-statespublic domainnothing46 kBNatural Earth
world-basemappublic domainnothing284 kBNASA EOSDIS GIBS — Blue Marble: Shaded Relief and Bathymetry

Withheld

DatasetWhy
basins_mrbno licence is stated as a value yet
bathymetryno licence is stated as a value yet
border-detail/no licence is stated as a value yet
border-provenance-gapsthe stated terms are not known to permit redistribution: IntMap licence (LICENSE)
companies/no licence is stated as a value yet
crust1no licence is stated as a value yet
curriculum-unitsthe stated terms are not known to permit redistribution: 政府標準利用規約(第2.0版) / CC BY 4.0 · Open Government Licence · The text of the document, and/or excerpts from it, may be freely reproduced (the document's own statement)
deep-skyno licence is stated as a value yet
ecoregions_2017no licence is stated as a value yet
elections/no licence is stated as a value yet
gazetteer-phoneno licence is stated as a value yet
gibs-rangeno licence is stated as a value yet
hdi-seriesno licence is stated as a value yet
hist-admin-fillno licence is stated as a value yet
hist-admin-reconthe stated terms are not known to permit redistribution: IntMap licence (LICENSE) · CC0 1.0 with a request for attribution · 国土数値情報ダウンロードサイトコンテンツ利用規約(旧国土情報利用約款準拠版) · 政府標準利用規約(第2.0版) · per dataset, as each publisher states (public domain, CC0, CC BY, CC BY IGO, ODbL 1.0, CC BY-SA, OGL …) — scripts/histrecon/atoms/geoboundaries-manifest.json; a record derived from a share-alike dataset is offered under that licence (LICENSE §5)
hist-admin-surveysthe stated terms are not known to permit redistribution: CC BY (geometry: «Copyright AWMC & Foss, CC-BY», no version stated) · CC BY 3.0 (Pleiades dates and names) · Open Government Licence - Canada · CC0 1.0 with a request for attribution
hist-admin1no licence is stated as a value yet
hist-admin2no licence is stated as a value yet
hist-admin3no licence is stated as a value yet
hist-claimsno licence is stated as a value yet
hist-coverage-holesno licence is stated as a value yet
hist-fidelityno licence is stated as a value yet
hist-kunino licence is stated as a value yet
histcities-homonymsno licence is stated as a value yet
histnamesno licence is stated as a value yet
language-aliasesno licence is stated as a value yet
maddisonno licence is stated as a value yet
moonsno licence is stated as a value yet
planetsnot in the built site
precip-mmno licence is stated as a value yet
precip-yearno licence is stated as a value yet
railways/no licence is stated as a value yet
slab2no licence is stated as a value yet
starsno licence is stated as a value yet
subcable-overridesno licence is stated as a value yet
subcablesno licence is stated as a value yet
subcables-lpno licence is stated as a value yet
subcables-metano licence is stated as a value yet
tectonicsno licence is stated as a value yet
tle/no licence is stated as a value yet
us-electionsno licence is stated as a value yet
volcano-detailno licence is stated as a value yet
volcanoes_gvpno licence is stated as a value yet
vs30no licence is stated as a value yet
vs30-phoneno licence is stated as a value yet
warsno licence is stated as a value yet
weekly-earththe stated terms are not known to permit redistribution: U.S. public domain (USGS) · U.S. Government work, not subject to copyright (NASA EONET)
whc-detailthe stated terms are not known to permit redistribution: © UNESCO
whc-sitesthe stated terms are not known to permit redistribution: © UNESCO
who-donno licence is stated as a value yet

What you agree to when you reuse

Show the credit

When a dataset’s terms require credit, show the credit line the catalogue gives for it wherever you show the data.

Share-alike

A dataset under ODbL or a share-alike Creative Commons licence must stay under that licence when you publish it or something built from it.

Non-commercial

Datasets marked non-commercial may not be reused for commercial purposes. IntMap’s own files are under IntMap’s licence (personal, research and educational use).

IntMap’s code

The embed client is part of IntMap and under IntMap’s licence. The message protocol is documented on this page, so you can also speak it with your own code.