GeoMap
A world map with a bubble per place, its area proportional to its count, over coastlines and country borders precomputed at build time. Optionally zoomable, merging crowded places into one bubble that splits as you zoom in.
The land silhouette and the shared country borders are two paths precomputed from Natural Earth 1:50m (no runtime fetch, no map dependency, no tiles), and each point is a circle at its projected coordinate whose AREA is proportional to its count, so doubling the count doubles the disc rather than its width.
Add zoomable and the wheel zooms about the pointer, two fingers pinch, a drag pans, and places too close together to draw separately merge into one bubble carrying their summed count, splitting into their members as you zoom in.
Single-identity encoding, so there is no tone axis and no legend. Press a bubble to flag its label and count (the others dim); the accessible name carries the biggest places with their values, because a screen reader user cannot see bubbles.
Active installs
iOS
Active installs
Android
Active installs
Web
tsx
Default
Compact
Zoomable
Inspected
Formatted counts
Props
Do & Don’t
GeoMap
Don’t
Places that all carry the same count draw identical bubbles, so the map costs a lot of space to say nothing; rank them in a BarList instead.
Do
Signups by city
Plot a modest number of places whose counts really differ, so the area encoding has something to say.
Zooming
Don’t
Turn it on for places that are already far apart. Nothing will ever merge, so the controls and the gesture are cost with no benefit, and a reader is invited to explore a map that has nothing further to show.
Do
Sessions by city
Turn on zoomable when places crowd each other, so a cluster can be opened up rather than drawn as overlapping discs.