Map is keyboard-accessible; markers navigable without pointer device
Why it matters
A map that requires a pointer device to navigate is inaccessible to keyboard-only users, screen reader users, and users with motor impairments — a violation of WCAG 2.2 SC 2.1.1 (Keyboard) and Section 508 2018 Refresh 502.3.3. For directories serving public-interest information (local services, healthcare providers, government facilities), keyboard inaccessibility can be a legal liability under the ADA. Users who rely on Tab navigation to cycle through markers and Enter to open detail popups receive no functional equivalent to mouse interaction if focus management is absent.
Severity rationale
Medium because keyboard inaccessibility locks out a measurable user segment and creates legal exposure, but does not corrupt data or expose security vulnerabilities.
Remediation
Use a map library with built-in keyboard support (Mapbox GL JS, Leaflet) and ensure custom markers are implemented as focusable, interactive elements with explicit aria-label attributes.
<div
id="map"
role="application"
aria-label="Interactive map of listings"
tabIndex={0}
/>
For custom marker elements, render them as <button> tags (not <div>) so they are natively keyboard-focusable:
markers.forEach((marker) => {
const el = document.createElement('button');
el.setAttribute('aria-label', `${marker.name}, ${marker.category}`);
el.className = 'map-marker';
el.addEventListener('keydown', (e) => {
if (e.key === 'Enter' || e.key === ' ') openPopup(marker);
});
new maplibregl.Marker({ element: el }).setLngLat([marker.lng, marker.lat]).addTo(map);
});
Verify focus indicators are visible — do not suppress outline in CSS without a visible alternative.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Map & Location Integration Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- wcag:2.2 · 2.1.1 — Keyboard — all functionality operable via keyboard
- wcag:2.2 · 2.4.7 — Focus Visible — keyboard focus indicator must be visible
- section-508:2018-refresh · 502.3.3 — User Interface Components — keyboard-accessible controls
Taxons
History
- 2026-04-18·v1.0.0·Initial import from directory-map-location·automated