8.6 KiB
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)
- Переключатель режимов в UI (toolbar, рядом с кнопкой 🏔️ рельефа)
- Сохранение выбора пользователя в localStorage
- Корректная работа переключения вместе с terrain (гипосометрия + hillshade)
- Производительность: тайлы должны загружаться быстро, без деградации UX
- Поддержка мобильных устройств
Исследовательские вопросы (для 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 поверх текущего стиля
- Добавление
rastersource + 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 должен явно выделить вопросы, которые требуют решения от владельца продукта:
-
Чистый спутник или гибрид?
Хочешь видеть просто снимки из космоса, или чтобы дороги и подписи тоже отображались поверх? -
Приоритет качества vs скорости
Готов ли жертвовать скоростью загрузки ради более детальных снимков (или наоборот)? -
Интеграция с terrain
При включении спутника terrain должен автоматически выключаться, или оставаться (и тогда гипсометрия будет «накладываться» на спутник)? -
Яндекс или ESRI?
Есть ли сильное предпочтение по источнику (российский vs международный)? -
Тёмный режим для спутника
Нужна ли «ночная» версия спутника, или достаточно текущей?
Результат работы Analyst'а
- BRD_SATELLITE_MODE.md (обновлённый, с заполненными разделами)
- Рекомендация по источнику + архитектуре (с обоснованием)
- Список открытых вопросов с предлагаемыми вариантами ответов
- (Опционально) Ссылки на примеры реализации в других проектах
Следующие шаги (после анализа)
- Согласование BRD со Славой
- Создание DEV_TASK (Architect + Developer)
- Реализация переключателя и интеграция с terrain
- Тестирование (в т.ч. на мобильных устройствах)
- Деплой
Примечания
- Спутниковый режим не отменяет текущую векторную карту — это дополнительная опция.
- Кнопка 🏔️ (рельеф) должна продолжать работать в обоих режимах.
- При переключении на спутник маршруты и POI должны оставаться видимыми (или с возможностью скрыть).