// JAVASCRIPT MAPPING FRAMEWORK

Turn data into maps.
In the browser.
With one script.

ixMaps builds interactive thematic maps — choropleth, proportional symbols, pie & bar charts — driven straight from your data. Chain a few calls, point at a CSV or GeoJSON URL, ship from a single CDN include.

ixmaps://live · world GDP per capita 2023 · interactive legend

This map was created by Claude Code guided by ixMaps skills. See the code ↗ · see only the ixMaps code: ixmap_gdp_minimal ↗

// WHY IXMAPS

A mapping toolkit that gets out of your way.

Built for people who'd rather write five lines than wire up a tile pipeline. Everything below ships in the box.

.layer().data().type()

Fluent chainable API

Pick a layer, bind your data, choose a type, define — reads top-to-bottom.

CSV · GEOJSON · PARQUET · +10 MORE

Data from anywhere

Point a layer at a URL — CSV, GeoJSON, TopoJSON, Parquet & ten more. ixMaps fetches, joins and renders.

PapaParse topojson-client DuckDB WASM flatgeobuf geobuf pbf geoparquet json-stat.js
CHOROPLETH · SYMBOLS · PIE · BAR

Thematic types built-in

Choropleths, proportional symbols, pie & bar markers — switch with one keyword.

Pie chart
PIE
Bar chart
BAR HORZ LEFT UP
Symbol chart
SYMBOL SEQUENCE CENTER
// THE WHOLE MAP, IN ONE CHAIN

Include one script. Chain your layers. Ship a map.

gdp-world.js
<script src="https://cdn.jsdelivr.net/gh/gjrichter/ixmaps-flat@1/ixmaps.js"></script><script>  var myMap = ixmaps.Map('map', {      mapType: 'white',      mapProjection: 'equalearth',      mode: 'pan', legend: 'closed', tools: false    })    .view([0, 0], 1)    .options({basemapopacity: 0});  // country borders — GISCO/Eurostat  myMap.layer('countries')    .data({url: GEO_URL, type: 'topojson'})    .binding({geo: 'geometry', id: 'CNTR_ID', title: 'NAME_ENGL'})    .type('FEATURE')    .style({colorscheme:['#e8e8e8'], linecolor:'#7a9ab0', linewidth:0.4})    .define();  // GDP choropleth — World Bank 2023  var theme = ixmaps.layer('countries')    .data({obj: DATA, type: 'json'})    .binding({lookup: 'id', value: 'gdp', title: 'name'})    .type('CHOROPLETH|QUANTILE')    .style({colorscheme:['#deeaf5','#b3cde3','#3182bd','#08519c'],            fillopacity: 0.82})    .meta({name:'countries_gdp',          tooltip:"<b>{{name}}</b><br>GDP <b>${{gdp}}k</b>"})    .title('GDP per Capita (USD k)')    .define();  myMap.layer(theme, 'direct');</script>
// SHIP IT

Start mapping your data.

Drop this in your page
<script src="https://cdn.jsdelivr.net/gh/gjrichter/ixmaps-flat@1/ixmaps.js"></script>