---
type: brd
work_item_id: ET-002
title: "BRD: Чекбокс показа/скрытия POI в попапе рельефа"
version: 1
status: approved
created_at: 2026-05-20
authors:
  - "agent:analyst"
---

# 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` через MapLibre `setLayoutProperty`

### 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)
