145 lines
8.6 KiB
Markdown
145 lines
8.6 KiB
Markdown
# BRD: Режим спутниковой карты (Схема / Спутник)
|
||
|
||
> Переключатель между векторной картой и спутниковым видом (как в Google Maps / Яндекс.Картах)
|
||
|
||
**Статус:** Analysis (ожидает работы Analyst)
|
||
**Приоритет:** Medium
|
||
**Фаза:** 5.5 (после terrain)
|
||
**Инициатор:** Слава
|
||
**Дата создания:** 2026-05-31
|
||
|
||
---
|
||
|
||
## Контекст
|
||
|
||
Сейчас Enduro Trails использует полностью векторную карту на базе MapLibre GL JS с кастомными стилями:
|
||
- `style.json` (светлая тема)
|
||
- `style-dark.json` (тёмная тема)
|
||
|
||
Рельеф (terrain) реализован в фазе 5.4: гипсометрия + hillshade (SRTM 30м).
|
||
|
||
Пользователь хочет иметь возможность переключаться между **схемой** и **спутником**, как на популярных картах. Это особенно полезно для:
|
||
- Визуальной оценки рельефа и ландшафта перед поездкой
|
||
- Понимания, как выглядит местность «вживую»
|
||
- Планирования маршрутов в сложных районах
|
||
|
||
---
|
||
|
||
## Цель
|
||
|
||
Реализовать переключатель режимов отображения карты:
|
||
- **Схема** — текущая векторная карта (с дорогами, POI, terrain)
|
||
- **Спутник** — растровый спутниковый слой (с возможностью гибридного отображения)
|
||
|
||
---
|
||
|
||
## Требования (MVP)
|
||
|
||
1. Переключатель режимов в UI (toolbar, рядом с кнопкой 🏔️ рельефа)
|
||
2. Сохранение выбора пользователя в localStorage
|
||
3. Корректная работа переключения вместе с terrain (гипосометрия + hillshade)
|
||
4. Производительность: тайлы должны загружаться быстро, без деградации UX
|
||
5. Поддержка мобильных устройств
|
||
|
||
---
|
||
|
||
## Исследовательские вопросы (для Analyst)
|
||
|
||
Analyst должен провести исследование и дать рекомендации по следующим направлениям:
|
||
|
||
### 1. Источники спутниковых тайлов
|
||
|
||
| Источник | Покрытие РФ | Качество | Лицензия/Стоимость | Примечание |
|
||
|----------|-------------|----------|---------------------|------------|
|
||
| ESRI World Imagery | Хорошее | Хорошее | Free (attribution) | Самый популярный вариант для MapLibre |
|
||
| Яндекс.Спутник | Отличное (РФ) | Отличное | ? | Нужно проверить API/тайлы |
|
||
| Maxar / DigitalGlobe | Отличное | Высокое | Платно | Дорого для open-source проекта |
|
||
| Sentinel Hub | Среднее | Среднее | Free tier | Низкое разрешение (~10м) |
|
||
| Mapbox Satellite | Хорошее | Хорошее | Платно | Требует Mapbox токен |
|
||
|
||
**Вопросы для Analyst:**
|
||
- Какой источник оптимален для ЦФО + Чувашия по соотношению качество/скорость/стоимость?
|
||
- Есть ли ограничения на использование ESRI World Imagery в коммерческих/открытых проектах?
|
||
- Можно ли использовать Яндекс.Спутник без токена (как тайлы)?
|
||
|
||
### 2. Архитектура реализации
|
||
|
||
**Вариант A: Отдельный satellite style**
|
||
- Полностью новый `style-satellite.json`
|
||
- Плюсы: чистый контроль над слоями
|
||
- Минусы: дублирование стилей, сложнее поддерживать terrain
|
||
|
||
**Вариант B: Raster overlay поверх текущего стиля**
|
||
- Добавление `raster` source + layer в текущий стиль
|
||
- Плюсы: минимальные изменения, terrain работает «из коробки»
|
||
- Минусы: z-order слоёв нужно контролировать
|
||
|
||
**Вариант C: Hybrid (спутник + дороги/подписи)**
|
||
- Спутник как base layer
|
||
- Векторные дороги/подписи поверх с полупрозрачностью
|
||
- Плюсы: лучший UX (понимаешь и рельеф, и дороги)
|
||
- Минусы: сложнее в разработке, нужно два набора стилей
|
||
|
||
**Вопросы для Analyst:**
|
||
- Какой вариант рекомендуешь и почему?
|
||
- Какой подход лучше с точки зрения поддержки terrain (F-29)?
|
||
|
||
### 3. UX и поведение
|
||
|
||
- Какой формат переключателя использовать (сегмент, иконка, выпадающий список)?
|
||
- Нужно ли показывать подписи (населённые пункты, реки) в спутниковом режиме?
|
||
- Как переключение должно влиять на terrain (автоматически выключать/оставлять)?
|
||
- Нужна ли отдельная тёмная версия спутника (ночь)?
|
||
- Какой дефолтный режим при первом открытии карты?
|
||
|
||
### 4. Производительность и кэширование
|
||
|
||
- Тайлы спутника кэшировать на клиенте (browser cache) или через nginx?
|
||
- Есть ли лимиты на запросы у выбранного источника?
|
||
- Какое разрешение тайлов использовать (256 vs 512 px)?
|
||
|
||
### 5. Открытые вопросы для согласования со Славой
|
||
|
||
Analyst должен явно выделить вопросы, которые требуют решения от владельца продукта:
|
||
|
||
1. **Чистый спутник или гибрид?**
|
||
Хочешь видеть просто снимки из космоса, или чтобы дороги и подписи тоже отображались поверх?
|
||
|
||
2. **Приоритет качества vs скорости**
|
||
Готов ли жертвовать скоростью загрузки ради более детальных снимков (или наоборот)?
|
||
|
||
3. **Интеграция с terrain**
|
||
При включении спутника terrain должен автоматически выключаться, или оставаться (и тогда гипсометрия будет «накладываться» на спутник)?
|
||
|
||
4. **Яндекс или ESRI?**
|
||
Есть ли сильное предпочтение по источнику (российский vs международный)?
|
||
|
||
5. **Тёмный режим для спутника**
|
||
Нужна ли «ночная» версия спутника, или достаточно текущей?
|
||
|
||
---
|
||
|
||
## Результат работы Analyst'а
|
||
|
||
1. **BRD_SATELLITE_MODE.md** (обновлённый, с заполненными разделами)
|
||
2. **Рекомендация** по источнику + архитектуре (с обоснованием)
|
||
3. **Список открытых вопросов** с предлагаемыми вариантами ответов
|
||
4. (Опционально) Ссылки на примеры реализации в других проектах
|
||
|
||
---
|
||
|
||
## Следующие шаги (после анализа)
|
||
|
||
1. Согласование BRD со Славой
|
||
2. Создание DEV_TASK (Architect + Developer)
|
||
3. Реализация переключателя и интеграция с terrain
|
||
4. Тестирование (в т.ч. на мобильных устройствах)
|
||
5. Деплой
|
||
|
||
---
|
||
|
||
## Примечания
|
||
|
||
- Спутниковый режим не отменяет текущую векторную карту — это дополнительная опция.
|
||
- Кнопка 🏔️ (рельеф) должна продолжать работать в обоих режимах.
|
||
- При переключении на спутник маршруты и POI должны оставаться видимыми (или с возможностью скрыть). |