3.3 KiB
3.3 KiB
type, work_item_id, title, version, status, created_at, authors
| type | work_item_id | title | version | status | created_at | authors | |
|---|---|---|---|---|---|---|---|
| brd | ET-002 | BRD: Чекбокс показа/скрытия POI в попапе рельефа | 1 | approved | 2026-05-20 |
|
BRD — ET-002: Чекбокс показа/скрытия POI в попапе рельефа
1. Цель
Дать пользователю возможность скрывать маркеры POI на карте, чтобы они не загромождали обзор при планировании маршрута. Управление — через чекбокс в существующем попапе кнопки «Рельеф».
2. Контекст
- Сейчас POI (слои
poi-circles,poi-labels) отображаются всегда при загрузке карты. - Попап кнопки «Рельеф» (
terrain-popup) уже содержит чекбоксы: Тени рельефа, Перепады, Грунтовки, Тропы. - Механизм
toggleLayer('poi')уже реализован в коде, но не привязан к UI в попапе.
3. Scope
In scope
- Добавить чекбокс «POI» в попап кнопки «Рельеф» (после секции «Тропы»)
- POI включены по умолчанию (checked)
- Состояние чекбокса сохраняется в localStorage (ключ
poi-visible) - При загрузке страницы — восстанавливать состояние из localStorage
- Скрытие/показ слоёв
poi-circlesиpoi-labelsчерез MapLibresetLayoutProperty
Out of scope
- Фильтрация POI по типу (кафе, заправки, и т.д.)
- Отдельная кнопка для POI вне попапа рельефа
- Изменение иконок или стилей POI
- Backend-изменения
4. Метрики успеха
| Метрика | Критерий |
|---|---|
| Чекбокс отображается в попапе | Визуально присутствует после «Тропы» |
| Снятие чекбокса скрывает POI | Слои poi-circles и poi-labels получают visibility: none |
| Установка чекбокса показывает POI | Слои получают visibility: visible |
| Состояние сохраняется | После перезагрузки страницы чекбокс и видимость POI соответствуют последнему выбору |
| Не ломает существующий функционал | Грунтовки, тропы, рельеф, роутинг работают как прежде |
5. Риски
| Риск | Вероятность | Митигация |
|---|---|---|
| Конфликт с существующим toggleLayer('poi') | Низкая | Использовать тот же механизм layerState, не дублировать логику |
| Попап становится слишком длинным на мобильных | Низкая | Один чекбокс — минимальное увеличение высоты |
6. Зависимости
- Нет внешних зависимостей
- Только фронтенд (vanilla JS + HTML)