Dotted map
Also called dot map, dotted world map, or world map dots
A world map drawn as a grid of evenly spaced dots, with highlighted locations and small pulses, used for global reach and regions sections.
type LatLng = { lat: number; lng: number };
const regions = [
{ city: 'Virginia', lat: 38.9, lng: -77.4 },
{ city: 'London', lat: 51.5, lng: -0.1 },
{ city: 'Singapore', lat: 1.35, lng: 103.8 },
{ city: 'Sydney', lat: -33.9, lng: 151.2 }
];
// Equirectangular: longitude and latitude map straight to x and y.
// The map spans 85°N to 58°S, which crops Antarctica.
const x = (lng: number) => lng + 180;
const y = (lat: number) => 85 - lat;
// `land`: land cells on a 4° grid, precomputed at build time from a
// public-domain coastline dataset such as Natural Earth.
export function DottedMap({ land }: { land: LatLng[] }) {
// Each dot is a zero-length line; its round cap draws a circle.
const dots = land
.filter((point) => point.lat > -58)
.map((point) => `M${x(point.lng)} ${y(point.lat)}h0`)
.join('');
return (
<div className='relative aspect-[360/143] w-full'>
<svg
viewBox='0 0 360 143'
aria-hidden
className='absolute inset-0 size-full text-neutral-300'
>
<path
d={dots}
stroke='currentColor'
strokeWidth={2}
strokeLinecap='round'
/>
</svg>
<ul>
{regions.map((region) => (
<li
key={region.city}
className='group absolute size-2.5 -translate-1/2'
style={{
left: `${(x(region.lng) / 360) * 100}%`,
top: `${(y(region.lat) / 143) * 100}%`
}}
>
<span
aria-hidden
className='absolute inset-0 animate-ping rounded-full bg-blue-500 motion-reduce:animate-none'
/>
<span className='absolute inset-0 rounded-full bg-blue-600 ring-2 ring-white' />
{/* Real text, so screen readers hear every region. */}
<span className='absolute bottom-full left-1/2 mb-2 -translate-x-1/2 rounded-md bg-neutral-900 px-2 py-1 text-xs whitespace-nowrap text-white opacity-0 transition-opacity group-hover:opacity-100'>
{region.city}
</span>
</li>
))}
</ul>
</div>
);
}Add a dotted world map to the "Global regions" section: land drawn as 3px light gray dots on a 4-degree grid with an equirectangular projection, cropping Antarctica. Mark 8 server regions with 10px blue dots, each sending out a pulsing ring that grows 2.5× and fades over 2.4s, staggered, and show the city name and latency in a small label on hover. Render the land dots as a single SVG path, and stop the pulses when prefers-reduced-motion is set.
Paste into Layerwise or any AI coding tool.
What is Dotted map?
A dotted map shows the continents as a field of small dots on a regular grid, like a halftone print. It reads as a world map at a glance while staying light and abstract, so it sits well behind a headline. Markers in the brand color, often with a pulsing ring, call out offices, customers, data centers, or server regions.
The dots come from a land mask: sample the globe every few degrees, keep the points that fall on land, and map longitude and latitude straight to x and y, which is called an equirectangular projection. Precompute the points instead of shipping map shapes to the browser. Drawing them as one SVG path, where each dot is a zero-length line with round caps, keeps a thousand dots in a single element; a canvas handles many more.
Spacing the dots 2 to 4 degrees apart gives a recognizable map without clutter. Keep the land dots faint so the markers stand out, name each location in real text instead of relying on color alone, and stop the pulses for people who prefer reduced motion.
Often confused with
- Globe
- A globe is a 3D sphere that turns, so only half the world shows at once. A dotted map lays the whole world flat, so every location stays visible.
Related terms
All termsGlobe
A 3D Earth drawn in dots that turns on its own and can be dragged, with markers and arcs for cities, offices, or network routes.
Grid background
A decorative background of thin grid lines, dots, stripes, or hexagons, often faded toward the edges, used behind hero sections and product shots.
Pulse animation
A soft, repeating beat or expanding ring that draws the eye to a live status, a new notification, or something that needs attention.
Hero section
The large first section at the top of a landing page, with a headline, a short subhead, a call to action, and a visual.
Build it with Layerwise
Describe your app, watch it run in a live preview, and publish it with a database, storage, and sign-in built in.