---
name: maps
description: >
Load this skill whenever the project contains static or interactive maps,
embedded map widgets (Google Maps, Leaflet, Mapbox, OpenStreetMap), or any
geographic visualizations. Under no circumstances embed a map without a
text-based alternative conveying the same information. Absolutely always
ensure map controls are keyboard-accessible and that all meaningful map
content is available without the visual map.
---
# Maps Accessibility Skill
> **Canonical source**: `examples/MAPS_ACCESSIBILITY_BEST_PRACTICES.md` in `mgifford/ACCESSIBILITY.md`
> This skill is derived from that file. When in doubt, the example is authoritative.
Apply these rules when implementing or reviewing any static or interactive map.
**Only load this skill if the project contains maps.**
---
## Core Mandate
No single text description works for every map. Start with the map's purpose
and the tasks it supports, then provide accessible content and controls that
preserve that purpose for people who cannot see, distinguish, point at, drag,
zoom, or interpret the visual map. Keep the map and its structured
alternative synchronized from the same data source.
---
## Severity Scale (this skill)
| Level | Meaning |
|---|---|
| **Critical** | Essential location data has no accessible alternative |
| **Serious** | Interactive map unreachable by keyboard; `role="application"` misused |
| **Moderate** | Skip link missing; colour independence gap; popup focus not managed |
| **Minor** | Missing `prefers-reduced-motion` for animations; legend incomplete |
---
## Classify the Map's Purpose First
| Map purpose | Essential task | Common accessible presentation |
|---|---|---|
| Simple locator | Where one place is and how to reach it | Concise alt, address, landmark, directions, contact info |
| Location directory | Find and compare services | Searchable list/table with names, addresses, distances, categories |
| Route/wayfinding | Travel from A to B | Ordered directions with distances, turns, landmarks, conditions |
| Thematic/quantitative | Compare values across areas | Summary + data table with region names, values, units, period |
| Boundary/zoning | Understand containment/adjacency | Named boundary descriptions, affected locations, downloadable data |
| Indoor/multi-floor | Navigate a building | Floor selector, accessible route instructions, entrances/lifts/stairs |
| Exploratory | Investigate spatial relationships | Synchronized filters, structured results, accessible query tools |
A map can serve more than one purpose — provide the alternatives needed for
every essential task rather than assuming one short `alt`, table, or
direction set is universally equivalent. WCAG 1.1.1's "equivalent purpose"
does not mean reproducing every pixel or street label — it means preserving
the information and tasks that matter in context. Research (the Map
Equivalent-Purpose Framework) found tables and turn-by-turn directions can be
insufficient when the purpose includes broad spatial understanding or
exploration — treat this as guidance, not a separate WCAG criterion, but
recognize when a table alone won't do.
---
## Critical: Text Alternatives for Static Maps
```html
| Branch | Address | Distance | Accessibility information |
|---|---|---|---|
| Central Library | 100 Main Street | 600 metres | Step-free entrance, lift, accessible washroom, hearing loop |
Distance: 350 metres. Typical travel time: 6 to 10 minutes.
Route data checked 15 July 2026. Call 555-0100 to confirm temporary closures.
Skip the interactive map and view locations
Use the named map controls to move or zoom.
View service locations as a list or download the location data.
``` An `