Экранные дикторы

Экранные дикторы и доступность в HERE Technologies JavaScript API строятся вокруг принципов семантической разметки, управляемых обновлений интерфейса и корректного взаимодействия с ARIA-атрибутами. Геоинформационные приложения предъявляют повышенные требования к доступности, поскольку значительная часть контента представлена визуально: карты, маркеры, маршруты, слои и динамические объекты. Для корректной работы с экранными дикторами требуется трансформация визуальной модели карты в логически структурированное представление.

Карты в JavaScript API представляют собой canvas/WebGL-контент, который не имеет собственной семантики для доступных технологий. Экранные дикторы не интерпретируют географические элементы напрямую, поэтому ключевая задача заключается в создании параллельного DOM-слоя с описательной информацией.

Основные ограничения:

  • отсутствие нативной семантики у графического слоя карты
  • динамическое изменение объектов без автоматической сигнализации assistive technologies
  • высокая плотность объектов, затрудняющая линейное чтение
  • необходимость ручного контроля фокуса и навигации

В результате доступность реализуется не через саму карту, а через её отражение в структурированном интерфейсе.

ARIA-слой как основа взаимодействия с экранными дикторами

ARIA-атрибуты формируют связующий слой между геопространственными объектами и текстовым представлением.

Ключевые элементы:

  • role="application" — обозначение интерактивной области карты
  • aria-label — описание карты или её состояния
  • aria-live — динамические уведомления
  • role="list" и role="listitem" — представление объектов (маршрутов, точек интереса)
  • aria-describedby — связь объектов с расширенными описаниями

Структурирование данных карты в список объектов позволяет экранным дикторам последовательно озвучивать элементы, превращая карту в навигационный список.

Динамические обновления и aria-live регионы

Карты постоянно изменяются: добавляются маркеры, обновляются маршруты, изменяется масштаб. Без механизмов уведомления экранный диктор не фиксирует изменения.

Использование aria-live позволяет транслировать изменения состояния:

  • polite — негрубые обновления (например, загрузка новых точек)
  • assertive — критические изменения (например, изменение маршрута)

Пример типовых категорий уведомлений:

  • изменение количества объектов на карте
  • обновление выбранной точки
  • построение маршрута
  • загрузка данных поиска

Для предотвращения перегрузки речевого вывода обновления агрегируются и отправляются пакетно.

Управление фокусом в интерактивной карте

Фокусная модель является критическим элементом доступности. Карта как единый canvas не имеет естественных фокусируемых элементов, поэтому фокус распределяется между виртуальными компонентами.

Основные принципы:

  • каждый интерактивный объект получает управляемый tabindex
  • фокус перемещается программно при выборе элементов
  • сохранение логического порядка навигации
  • предотвращение «потери фокуса» при перерисовке карты

Особое значение имеет синхронизация фокуса с экранным диктором: изменение выделенного маркера должно сопровождаться обновлением доступного описания.

Представление маркеров и объектов

Географические маркеры не имеют семантики, поэтому создаются их текстовые аналоги.

Каждый маркер описывается через:

  • название объекта
  • тип (ресторан, остановка, адрес, точка интереса)
  • расстояние или координаты
  • дополнительное описание

Структура может быть представлена как список:

  • элемент списка = маркер
  • вложенное описание = aria-describedby

При активации маркера происходит переход фокуса и обновление доступного текста.

Роль скрытых DOM-элементов

Скрытые элементы (visually hidden) используются для хранения информации, недоступной визуальному интерфейсу, но необходимой экранным дикторам.

Применения:

  • описание геометрии маршрута
  • текстовое представление кластеров объектов
  • уведомления о состоянии загрузки
  • пояснение групп маркеров

Эти элементы не участвуют в визуальной отрисовке, но формируют текстовую карту.

Навигация по карте через клавиатурные события

Экранные дикторы тесно связаны с клавиатурной навигацией. Управление осуществляется через обработчики событий:

  • стрелки — перемещение между объектами
  • Tab — переход между зонами интерфейса
  • Enter — активация объекта
  • Escape — выход из режима карты

Логика навигации строится не на координатной сетке, а на последовательности логических объектов.

Обработка кластеров и групп объектов

При высокой плотности данных маркеры объединяются в кластеры. Для экранных дикторов кластеры должны иметь собственную семантику.

Типовая модель:

  • кластер = группа элементов
  • описание = количество объектов
  • раскрытие = переход к списку элементов

Экранный диктор озвучивает не геометрию, а смысловую структуру: «группа из 12 объектов».

Доступность маршрутов и навигационных линий

Маршруты представляют сложную структуру, состоящую из сегментов, поворотов и расстояний.

Для экранных дикторов маршрут трансформируется в последовательность:

  • начальная точка
  • промежуточные шаги
  • ключевые повороты
  • конечная точка

Каждый сегмент может быть представлен как отдельный элемент списка с описанием действия. Это позволяет линейно воспроизводить маршрут.

Состояния загрузки и информирование пользователя

Динамические данные требуют явного отражения состояния:

  • загрузка карты
  • обновление слоёв
  • получение результатов поиска
  • перестроение маршрута

Для этого используются:

  • aria-busy
  • текстовые уведомления
  • скрытые статусы

Экранный диктор получает не визуальное состояние, а текстовую интерпретацию процесса.

Работа с геокодированием и результатами поиска

Результаты геокодирования формируются как доступные списки:

  • адрес
  • координаты
  • тип объекта
  • степень совпадения

Каждый результат имеет структурированное описание, позволяющее экранному диктору воспроизводить информацию без визуального контекста.

Доступность всплывающих окон и информационных панелей

Информационные окна (popups) требуют отдельной семантической обработки.

Принципы:

  • автоматический перевод фокуса в окно
  • объявление открытия через aria-live
  • возможность последовательного чтения содержимого
  • возврат фокуса на карту после закрытия

Каждое окно рассматривается как самостоятельный интерактивный блок.

Слои карты и переключение представлений

Карты часто содержат несколько слоёв: транспорт, трафик, спутник, точки интереса.

Для экранных дикторов:

  • каждый слой имеет текстовое имя
  • состояние включено/выключено озвучивается
  • переключение фиксируется как изменение контекста

Слои не визуализируются как графика, а представляются как набор доступных режимов.

Согласование визуального и доступного представления

Основная сложность заключается в синхронизации двух параллельных представлений:

  • визуального (canvas/WebGL)
  • доступного (DOM + ARIA)

Несоответствие между ними приводит к рассинхронизации восприятия. Поэтому любые изменения на карте должны немедленно отражаться в текстовой модели.

Ключевые механизмы синхронизации:

  • события изменения состояния карты
  • централизованное хранилище объектов
  • единый слой уведомлений
  • обновляемая модель доступных элементов

Обработка масштабирования и перемещения карты

Изменение масштаба и положения карты влияет на доступные элементы.

Поведение для экранных дикторов:

  • обновление списка видимых объектов
  • объявление изменения области просмотра
  • перерасчёт расстояний
  • обновление кластеризации

С точки зрения доступности карта превращается в динамический фильтр объектов.

Ошибки доступности и их последствия

Типовые проблемы:

  • отсутствие текстовых альтернатив маркерам
  • некорректное управление фокусом
  • чрезмерные live-обновления
  • несогласованность DOM и визуального слоя
  • отсутствие структурированной навигации

Такие ошибки приводят к невозможности последовательного чтения карты экранным диктором и разрушению логики навигации.

Модель доступного взаимодействия как слой абстракции

Экранные дикторы не взаимодействуют с картой напрямую. Между ними всегда существует абстракционный слой, преобразующий географические данные в линейную текстовую структуру.

Эта модель включает:

  • список объектов
  • состояния элементов
  • события изменения
  • текстовые описания пространственных данных

Именно этот слой определяет качество доступности, а не графическая реализация карты.