9.3 KiB
9.3 KiB
type, work_item_id, title, version, status, created_at, updated_at, authors
| type | work_item_id | title | version | status | created_at | updated_at | authors | |
|---|---|---|---|---|---|---|---|---|
| brd | ET-007 | BRD: Спутниковая карта (Схема / Спутник) | 1 | draft | 2026-05-31 | 2026-05-31 |
|
BRD — ET-007: Спутниковая карта (Схема / Спутник)
1. Цель
Дать пользователю возможность одним кликом переключать подложку карты между «Схемой» (текущая OSM-схема) и «Спутник» (растровые снимки поверхности Земли). Спутниковая подложка помогает увидеть реальный рельеф и поверхность маршрута — лес/поле/брод/каменистый участок — до выезда.
2. Контекст
- Сейчас в приложении используется единственная подложка — OSM-растр,
стилизованный для «Схемы» в двух темах (
style.json,style-dark.json). Спутникового слоя нет. - В фазе PH-5 Redesign уже была введена тёмная/светлая тема — но «тема» относится к стилизации (контрасты, насыщенность), а не к природе подложки.
- Эндуро-маршруты часто проходят вне дорог OSM (бездорожье, броды, лесные участки). Спутник критичен для разведки.
- Все клиентские модули (
app.js,units.js,gpx.js) уже умеют переживатьmap.setStyle()черезrebuildMapOverlays()— это опорная точка для будущей реализации.
3. Scope
In scope
| # | Функция |
|---|---|
| F-01 | Переключатель «Схема / Спутник» в UI (segmented control) |
| F-02 | Спутниковая подложка как новый raster-источник (бесплатный, без API-ключа) |
| F-03 | В режиме «Спутник» — скрыта OSM-схема, показаны спутниковые тайлы |
| F-04 | Все надстройки (грунтовки, тропы, POI, hillshade, TRI, маршрут, GPX) поверх спутника |
| F-05 | Сохранение выбора в localStorage (ключ map-base-layer) |
| F-06 | Восстановление выбора при загрузке страницы и при смене темы |
| F-07 | Корректное отображение атрибуции спутниковых тайлов |
| F-08 | Сохранение всех пользовательских слоёв (роутинг, GPX, recon) при переключении |
Out of scope
- Кэширование спутниковых тайлов (offline / PWA — это PH-9).
- Динамический выбор провайдера спутниковых тайлов в UI.
- Гибридный режим «Спутник + подписи дорог OSM поверх».
- Самостоятельный хостинг спутниковых тайлов (юридические/трафик-риски).
- Изменение базовой карты для расчёта маршрутов (роутинг по-прежнему OSRM).
- Авто-переключение Схема/Спутник в зависимости от зума.
4. Метрики успеха
| Метрика | Критерий |
|---|---|
| Время переключения | ≤ 500 мс от клика до первой видимой спутниковой плитки |
| Сохранение состояния | Выбор подложки сохраняется после reload, смены темы, смены слоёв terrain |
| Совместимость со слоями | Грунтовки, тропы, POI, маршрут OSRM, GPX-треки, hillshade, TRI видны и поверх спутника |
| Совместимость с темой | Переключение тёмной/светлой темы не сбрасывает режим «Спутник» |
| Атрибуция | На карте видна корректная атрибуция провайдера спутника |
| Не ломает существующее | Все режимы (роутинг, разведка, красивый маршрут, GPX, линейка) работают как прежде |
5. Риски
| Риск | Вероятность | Влияние | Митигация |
|---|---|---|---|
| Провайдер спутниковых тайлов закроет доступ / введёт лимит / потребует API-ключ | Средняя | Высокое | Зафиксировать конкретного провайдера в ADR; предусмотреть точку расширения для альтернативного провайдера (несколько URL) |
| Спутниковая подложка медленно грузится → пользователь видит «дыры» | Высокая | Среднее | Использовать background-цвет (тёмно-серый) под спутником; OSM-схема остаётся как fallback в случае ошибки загрузки тайлов |
| Цвет грунтовок и троп плохо виден на спутниковой подложке | Высокая | Среднее | TRZ: на режиме «Спутник» включается обводка (halo) у линий грунтовок и троп — по аналогии с подписями POI |
| Hillshade поверх спутника даёт некрасивое наложение (двойное затенение рельефа) | Средняя | Низкое | По умолчанию hillshade отключается при включении спутника — поведение фиксируется в TRZ |
| Юридические ограничения на использование стороннего провайдера спутниковых тайлов | Низкая | Высокое | В ADR указать выбранного провайдера с лицензией, разрешающей использование без API-ключа (Esri World Imagery, ArcGIS) |
| Регресс UI на мобильных устройствах из-за нового переключателя | Низкая | Среднее | UI-тест-кейсы (04b) для desktop и mobile viewport |
| Конфликт с уже сохранёнными localStorage-значениями старых версий | Низкая | Низкое | Использовать новый ключ map-base-layer, default = schematic |
6. Зависимости
- Только фронтенд — backend изменений не требуется.
- MapLibre GL JS 4.7.0 (уже подключен).
- Внешний провайдер спутниковых тайлов (выбор и фиксация — в ADR).
- Сетевое подключение клиента к серверу провайдера.
7. Связь с roadmap
- Фаза PH-5 Redesign — тёмная тема и mobile UI уже сделаны; ET-007 встраивается в эту же панель «Рельеф / Слои» (одна точка управления визуальными слоями карты).
- Фаза PH-9 PWA — кэширование спутниковых тайлов оффлайн — будет планироваться отдельно, ET-007 закладывает архитектурную основу (источник тайлов, точка переключения).