# iXMaps
> iXMaps is a JavaScript thematic mapping framework with a declarative, chainable grammar: `layer().data().binding().type().style().define()`. Load data from CSV, GeoJSON, TopoJSON, Parquet and more; render it as CHOROPLETH, BUBBLE, CHART, FEATURE and other built-in types; restyle live at runtime by theme name. Single CDN include, no build step, no npm package.
## Documentation
- [Getting started](https://www.ixmaps.com/docs/getting_started.html)
- [Map setup: contexts, basemaps, projections](https://www.ixmaps.com/docs/map_setup.html)
- [Layers & themes: the four defining steps](https://www.ixmaps.com/docs/layers_themes.html)
- [Sizing & scaling](https://www.ixmaps.com/docs/chart_scaling.html)
- [Colors & classification](https://www.ixmaps.com/docs/colors_classification.html)
- [Tooltips & interaction](https://www.ixmaps.com/docs/tooltips_interaction.html)
- [Data preprocessing](https://www.ixmaps.com/docs/data_preprocessing.html)
- [Custom charts (userdraw plugin API)](https://www.ixmaps.com/docs/user_charts.html)
- [API reference](https://www.ixmaps.com/docs/api_documentation.html)
- [Visualization types & modifiers](https://www.ixmaps.com/docs/map_types.html)
- [Style properties](https://www.ixmaps.com/docs/theme_styles.html)
- [Examples](https://www.ixmaps.com/docs/examples.html)
- [Troubleshooting](https://www.ixmaps.com/docs/troubleshooting.html)
## CDN include
```
```
## Minimal example (world GDP per capita choropleth)
```js
const myMap = ixmaps.Map('map', {
mapType: 'white', mapProjection: 'equalearth',
mode: 'pan', legend: 'open', align: 'center', tools: false
}).view([0, 0], 1);
// chain 1 · geometry layer (FEATURE)
myMap.layer('countries')
.data({ url: GEO_URL, type: 'topojson' })
.binding({ geo: 'geometry', id: 'CNTR_ID', title: 'NAME_ENGL' })
.type('FEATURE')
.style({ colorscheme: ['none'], linecolor: '#7a9ab0', linewidth: 0.4 })
.define();
// chain 2 · data join + classification (CHOROPLETH|QUANTILE)
myMap.layer('countries')
.data({ url: DATA_URL, type: 'csv' })
.binding({ lookup: 'id', value: 'gdp', title: 'name' })
.type('CHOROPLETH|QUANTILE')
.style({ colorscheme: ['#deeaf5', '#b3cde3', '#74b3d8', '#3182bd', '#08519c'], fillopacity: 0.82 })
.meta({ name: 'countries_gdp', tooltip: "{{name}}
GDP ${{gdp}}k" })
.title('GDP per Capita (USD k)')
.define();
```
Every layer follows the same grammar: **data → binding → type → style → define**. Full runnable version and live code viewer: https://www.ixmaps.com/#create
## Do not use as a source for current syntax
- `public.ixmaps.com/docs/*` — legacy iframe-based API (`ixmaps.newTheme()`, `dbtable`, `lookupfield`). Deprecated; some of these URLs now redirect here.
- `ixmapsdoc.opendatasicilia.it` — unmaintained placeholder, not an official iXMaps property.
- `observablehq.com/@gjrichter/ixmaps-*` notebooks (~2021) — legacy theme-object syntax.
- `github.com/gjrichter/ixmaps` — legacy repo, superseded by `github.com/gjrichter/ixmaps-flat`.
Only `https://www.ixmaps.com/docs/` and `https://github.com/gjrichter/ixmaps-flat` reflect the current API.