Introducing ApexMaps: Geographic Data Visualization for the ApexCharts Family
Most JavaScript mapping libraries hand you a blank canvas and a projection function, then leave finding, converting, and hosting boundary data as your problem to solve before you can draw a single shape. ApexMaps is a new library in the ApexCharts family that treats geographic data visualization the way ApexCharts treats charts: sensible defaults, a real feature set, and the geometry itself as part of the product rather than a prerequisite you assemble yourself.
The whole quick-start is two option keys:
import ApexMaps from 'apexmaps'
const map = new ApexMaps(document.querySelector('#map'), {
geo: { map: 'world/countries@110m' },
series: [
{
name: 'Unemployment rate',
joinBy: ['iso_a3', 'code'],
data: [
{ code: 'FRA', value: 7.3 },
{ code: 'DEU', value: 5.7 },
],
},
],
})
await map.render()
No geometry to find, host, or parse. No projection, palette, classification, legend, label, or tooltip configuration. The defaults are meant to be shipped as-is, not tuned before a reader sees them.
Key takeaways
- A 26-pack geometry registry ships with the library. World countries and coastline, US states and all 3,231 counties, EU NUTS levels 0 through 3, and admin-1 boundaries for 15 more countries, all fetched lazily and cached at one request per pack.
- Five series types:
choropleth,bubble,marker,arc, andline, plus an automatic basemap whenever no data series is present. - A rule, not a feature list, decides what's free. A map that answers a question is free in the Community tier; a map that becomes an application (clustering, drilldown, annotations, arc/line routes, linked selection, custom projections) is Premium. Every Premium feature works without a key, with a watermark, so you can evaluate it before buying.
- Accessibility is never gated, in any tier, permanently. ARIA roles, keyboard navigation, and an auto-generated description ship free.
- One camera frame writes a single
transform, regardless of feature count. 3,231 US counties pan and zoom at a measured p95 of 3.1 ms per frame. - Framework wrappers for React, Vue, and Angular ship alongside the core package, each typed against ApexMaps' own option types.
Choropleths, bubbles, and markers
A choropleth colors regions by a joined value. Two keys are enough: which geometry to draw, and which data joins to it. Everything past that, Equal Earth projection, quantile classification, an OkLab-sampled color ramp, a legend with real computed break values, and a distinct color for unmatched regions, is a default chosen to be publishable, not merely neutral.
Bubble maps exist for a different job: a choropleth of totals mostly redraws the map of where big areas are, while a circle's size is independent of the polygon under it. ApexMaps scales bubble radius by the square root of value by default, so area (what a reader actually perceives) is proportional to the number, not the radius.
Markers say "something is here" at a fixed size, with seven generated shapes and automatic categorical coloring via colorBy. When a marker set gets dense, point clustering (a Premium feature) merges nearby points by real screen distance rather than snapping to a grid cell, so a reader never sees the map contradict what they can see with two nearby points landing in different clusters.
Routes, drilldown, and linked selection
Arc and line series (Premium) draw connections instead of places: routes, cables, trade, migration. Arcs are geodesics by default, because the shortest path between two points on a globe is a great circle, and a straight line on a projected map is neither the true path nor the true distance. Antimeridian cutting means a trans-Pacific flight route exits the right edge of the map and re-enters on the left instead of streaking backward across it.
series: [
{
type: 'arc',
name: 'Weekly flights',
data: [{ from: [103.99, 1.36], to: [-0.45, 51.47], value: 900 }],
endpoints: { show: true },
},
]
Drilldown (Premium) restricts the child level to the exact feature that was clicked, the detail that separates a drilldown from a zoom: showing all 3,231 US counties after clicking California would just leave the reader to find California again. Which counties belong to which state isn't something you configure; ApexMaps detects it from the geometry's own parent-referencing fields (TIGER's state_abbr, Eurostat's cntr_code) or a hierarchical key prefix, and declines the drilldown with a stated reason rather than landing on an empty map when neither route resolves.
Linked maps (Premium) share a selection: shift-drag a box on one map, and every map declaring the same link: { group } brushes and dims in sync. A box selection tests each candidate's anchor point rather than its bounding box, on purpose. Alaska's bounding box spans the Pacific, so a naive intersection test would select it from a box nowhere near it.
Free in every plan: accessibility, the canvas renderer, and fuzzy joins
Three choices in ApexMaps are deliberately free even though a stricter reading of "advanced feature" could have gated them:
- Accessibility never gates, in any tier, permanently. Gating it would block exactly the public-sector and civic use cases geographic data visualization serves most directly.
- The canvas renderer is free, because it's a rendering strategy, not a feature. Charging for it would mean "your map is slow unless you pay."
fuzzyJoinis free, because cleaning up someone else's messy real-world data ("Ivory Coast"vs"Côte d'Ivoire") is the ordinary cost of using real data, not a premium convenience.
That last point matters more than it sounds: ApexMaps reports roughly nine in ten real-world map bugs as join failures rendered as silent gray. In development, it prints exactly what happened instead:
join: 3/6 data rows matched 3/177 features (geometry key "name", data key "name")
3 data row(s) did not match geometry:
"Ivory Coast" -> did you mean "Côte d'Ivoire"?
See it live
Free vs. Premium
| Free, always | Premium |
|---|---|
choropleth, bubble, and marker series, plus the automatic basemap | Point clustering |
| All built-in projections, with spec objects | Registering your own projection |
| The geometry registry, every pack, with provenance and attribution | Drilldown and its breadcrumb |
| Tooltips, legends, labels, data labels, states, and themes | Editorial annotations |
| Zoom, pan, pinch, hover, click and box selection, the camera API | arc and line route series |
Joins, including fuzzyJoin, and the join diagnostics | Linked selection across maps |
| Scales, palettes, size legends, responsive rules | |
| PNG and SVG export | |
| The canvas renderer | |
| The accessibility layer |
One license key covers the whole ApexCharts family: an existing ApexCharts, ApexGrid, or ApexStock customer doesn't need a second key for ApexMaps. See Licensing for the full breakdown, including the geometry data's own third-party licenses (Natural Earth and US Census TIGER are public domain; Eurostat GISCO is CC BY 4.0 with automatic attribution).
Go deeper
- Installation & Usage
- Geometry Registry
- Markers and Clustering
- Drilldown
- Full docs and the demo gallery
Summary
ApexMaps brings the ApexCharts family's philosophy, defaults that are meant to be shipped rather than tuned, to geographic data visualization: a real geometry registry instead of a BYO-boundary-files requirement, five series types that each say something a plain choropleth can't, and a licensing model that gates advanced interaction rather than the basics. It's available today at apexcharts.com/apexmaps, with full documentation and a live demo gallery.
Frequently asked questions
What is ApexMaps?
ApexMaps is a JavaScript library for geographic data visualization in the ApexCharts family: choropleths, proportional-symbol bubble maps, categorical markers with clustering, and great-circle arc/line routes, drawn over a built-in registry of 26 geometry packs.
Is ApexMaps free?
The Community tier is free for individuals, non-profits, educators, and organizations under $2M USD in annual revenue, and it includes the core series types, the full geometry registry, joins, scales, palettes, export, and accessibility. Clustering, drilldown, annotations, arc/line routes, custom projections, and linked-map selection require a Premium or OEM license, though they work without a key for evaluation, with a watermark.
Do I need to host my own map data?
No. ApexMaps ships 26 built-in geometry packs (world countries, US states and counties, EU NUTS, and admin-1 boundaries for 15 countries) fetched lazily from a CDN, with provenance and required attribution rendered automatically.
Does ApexMaps work with React, Vue, and Angular?
Yes. react-apexmaps, vue-apexmaps, and ngx-apexmaps are typed wrappers built for each framework's own change-detection model, alongside the framework-agnostic core package.