All tiles in this demo are procedurally generated with Canvas — pan, zoom, drop pins. Use it as a baseline before plugging in a real tile provider.
Layered noise with contour-style hatch lines.
Low-luminance palette for dashboards.
Off-white parchment with bezier rivers.
// Replace the procedural draw with:
const url = `https://your-cdn.example/v1/tiles/${z}/${x}/${y}.png`;
img.src = url;
Pins are anchored at (lat, lon) and re-projected on each pan/zoom — no external dependency.