# Провайдеры онлайн-карт для РФ ## Критерии выбора - Работоспособность в России (не заблокированы) - Схематический стиль (не спутник) - JavaScript API для встраивания в веб - Бесплатный тариф для старта - Производительность и кастомизация маркеров --- ## Варианты ### 1. Яндекс Карты (Яндекс JS API v3) | Характеристика | Значение | |----------------|----------| | Статус в РФ | ✅ Работает | | Схематический стиль | ✅ `yandex#map` + кастомные стили | | Бесплатный тариф | ✅ 10 000 запросов/сутки, дольше 30 дней — от 300р/мес | | Гео-поиск | ✅ Встроенный поиск по адресам РФ | | Маркеры | ✅ Кастомные, кластеризация, балуны (PlaceCard) | | Ограничения | ❌ Работает только в РФ и СНГ | | API | JS API v3, HTTP API геокодера | **Вердикт: основной провайдер для РФ** - Нативная поддержка российских адресов - Хорошая документация на русском - Простая кастомизация балунов под PlaceCard - Определение региона пользователя через JS API ### 2. MapLibre GL JS + OpenStreetMap | Характеристика | Значение | |----------------|----------| | Статус в РФ | ✅ Работает (через любые тайлы) | | Схематический стиль | ✅ Кастомный style.json (можно сделать схематичным) | | Бесплатный тариф | ✅ Open Source, бесплатно | | Маркеры | ✅ Кастомные, кластеризация | | Поиск адресов | ❌ Нужен отдельный сервис (Nominatim или DaData) | | Тайлы | MapTiler, Geoapify, или self-hosted | **Вердикт: резервный / международный провайдер** - Работает где угодно - Требует больше настройки - Для РФ нужен тайловый сервер с российскими тайлами (NextGIS, Geoapify) ### 3. 2GIS Карты | Характеристика | Значение | |----------------|----------| | Статус в РФ | ✅ Работает | | Схематический стиль | ✅ | | Бесплатный тариф | ✅ До 50 000 запросов/мес | | API | JS API (онлайн), Map API (мобильные) | | Маркеры | ✅ Кастомные | | Детализация РФ | ✅ Отличная | **Вердикт: альтернатива для РФ, но API менее гибкий чем Яндекс** ### 4. Leaflet + OpenStreetMap (через прокси) | Характеристика | Значение | |----------------|----------| | Статус в РФ | ✅ Работает | | Схематический стиль | ⚠️ Зависит от тайлов | | Бесплатный тариф | ✅ | | Маркеры | ✅ Через плагины | **Вердикт: слишком базовая, многое нужно делать руками** --- ## Итоговая стратегия ``` Определение страны пользователя ├── РФ / СНГ → Яндекс Карты JS API v3 └── Остальной мир → MapLibre GL JS + OSM (MapTiler) ``` ### Определение региона (Geo-detection) 1. **Backend**: заголовок Cloudflare `CF-IPCountry` или база GeoIP в Redis 2. **Frontend**: `Intl.DateTimeFormat().resolvedOptions().timeZone` как запасной вариант 3. **Ответ API** при загрузке страницы: `{ map_provider: "yandex" | "maplibre" }` ### План внедрения 1. **MVP**: только Яндекс Карты (первый запуск только в РФ) 2. **V2**: добавить MapLibre для международных пользователей 3. Держать оба провайдера под одним интерфейсом через абстракцию `MapAdapter`