В 2022 Google Maps API стал недоступен по оплате из РФ. С тех пор каждый новый проект задаёт один и тот же вопрос: какая карта в России работает, ничего не отвалится завтра, и сколько это стоит. Разбираем три реалистичных варианта.
Кратко: что выбрать
| Сценарий | Выбор |
|---|---|
| Простая карта с одним маркером для контактов | Yandex Maps JS API |
| Карта с маршрутами и геокодером, B2C | Yandex Maps Platform |
| Карта для логистики и доставки в РФ | 2GIS Maps API |
| Кастомный стиль, оффлайн-тайлы, без вендор-лока | MapLibre + свои тайлы |
| Карта с городами СНГ + Россия | 2GIS или MapLibre |
Yandex Maps
Самый распространённый в РФ. Хорошая детализация городов России, обновления раз в 1-2 недели, есть пробки, маршруты, геокодинг.
Версии API
В 2024 Яндекс перевёл всех на JS API 3.0, старая 2.x работает в режиме поддержки.
<script src="https://api-maps.yandex.ru/v3/?apikey=YOUR_KEY&lang=ru_RU"></script>
ymaps3.ready.then(() => {
const map = new ymaps3.YMap(document.getElementById("map"), {
location: { center: [37.617, 55.755], zoom: 12 },
});
map.addChild(new ymaps3.YMapDefaultSchemeLayer());
});
Лимиты и цены 2026
Бесплатный тариф — 25 000 загрузок карты в сутки. Геокодер, поиск, маршрутизация — отдельные квоты, обычно 1 000-5 000 в сутки бесплатно.
Платный — от 8-30 ₽ за 1000 запросов в зависимости от типа. Для большинства корпоративных сайтов хватает бесплатного.
Юридика
Бесплатное использование — только если в карте есть логотип Яндекса и нет коммерческого использования геоданных в обход API. Для коммерческой логистики — отдельный enterprise-договор.
2GIS Maps API
Сильны в логистике и B2B. Особо хорошая база организаций — есть категории, рейтинги, телефоны, фотографии. Покрытие — Россия + СНГ + Европа.
<link href="https://mapgl.2gis.com/api/css" rel="stylesheet" />
<script src="https://mapgl.2gis.com/api/js/v1"></script>
const map = new mapgl.Map("map", {
center: [37.617, 55.755],
zoom: 13,
key: "YOUR_KEY",
});
new mapgl.Marker(map, { coordinates: [37.617, 55.755] });
Стилистика отличается — чище, более минималистичная. Многим дизайнерам это нравится больше.
Цены
Базовая карта бесплатна без лимитов на просмотры. Платится отдельно за directions API, fleet (для машин с GPS), широкий поиск организаций. Тарифы обсуждаются индивидуально, для маленького B2C-сайта обычно остаётся в бесплатной зоне.
MapLibre + свои тайлы
OpenSource-форк Mapbox GL JS. Сама библиотека бесплатная, но тайлы нужно где-то брать.
Источники тайлов:
- OpenStreetMap raster — бесплатно, но с условиями (нельзя heavy-load, нужно атрибуция).
- MapTiler — managed, есть бесплатный план до 100k запросов/мес.
- Stadia Maps — managed, разумные цены.
- Свой tile server на TileServer-GL с данными OSM — полностью свой, $20-50/мес VPS на старте.
import maplibregl from "maplibre-gl";
const map = new maplibregl.Map({
container: "map",
style: "https://api.maptiler.com/maps/streets/style.json?key=KEY",
center: [37.617, 55.755],
zoom: 12,
});
Плюс MapLibre — полный контроль над стилем (можно покрасить под бренд), нет вендор-лока, работает офлайн с PWA. Минус — нет российских пробок, актуальность OSM в России неоднородная (Москва-Петербург отличные, малые города хуже).
Сравнение
| Критерий | Yandex | 2GIS | MapLibre |
|---|---|---|---|
| Покрытие России | топ | топ | OSM (зависит от города) |
| База организаций | хорошо | топ | нет |
| Пробки | да | да | нет |
| Геокодер | да | да | через сторонний (Nominatim) |
| Маршруты | да, авто/пешком/общ.транспорт | да | через OSRM/Valhalla отдельно |
| Бесплатный лимит | 25k/день | без лимита базы | свои тайлы — без лимита |
| Кастомный стиль | ограниченно | нет | полный |
| Лога вендора в карте | обязательно | обязательно | по выбору |
React-обёртки
Yandex
Официальной обёртки для v3 нет. Самописная или @pbe/react-yandex-maps (для v2.x).
2GIS
@2gis/mapgl напрямую через ref:
"use client";
import { useEffect, useRef } from "react";
import { load } from "@2gis/mapgl";
export function Map2GIS({ center, zoom }) {
const ref = useRef<HTMLDivElement>(null);
useEffect(() => {
let map: any;
load().then((mapgl) => {
map = new mapgl.Map(ref.current!, { center, zoom, key: process.env.NEXT_PUBLIC_2GIS_KEY });
});
return () => map?.destroy();
}, []);
return <div ref={ref} style={{ width: "100%", height: 400 }} />;
}
MapLibre
react-map-gl с adapter react-map-gl/maplibre:
import Map, { Marker } from "react-map-gl/maplibre";
<Map initialViewState={{ longitude: 37.617, latitude: 55.755, zoom: 12 }}>
<Marker longitude={37.617} latitude={55.755} />
</Map>
Геокодирование
Превратить адрес «Москва, ул. Тверская, 12» в координаты:
- Yandex Geocoder API —
https://geocode-maps.yandex.ru/1.x/?apikey=...&geocode=Москва,Тверская+12 - 2GIS Catalog API —
https://catalog.api.2gis.ru/3.0/items?q=Тверская+12+Москва - Nominatim (OSM) — бесплатный, но с rate limit 1 req/sec на демо-сервере. Для продакшена — свой инстанс.
Кешируйте результат — адреса меняются редко, а каждый запрос платный. В Postgres с уникальным индексом по нормализованной строке адреса.
Маркеры с кластеризацией
Если на карте сотни маркеров, рисовать их все — тормозит. Нужен clustering.
В MapLibre — встроенный supercluster:
map.addSource("places", {
type: "geojson",
data: places,
cluster: true,
clusterRadius: 50,
});
В 2GIS — mapgl.Clusterer. В Yandex v3 — отдельный YMapClusterer. У всех логика одинаковая: маркеры в пределах N пикселей объединяются в один.
Производительность
- Лениво подгружайте скрипт карты —
dynamic(() => import("..."), { ssr: false }). Не грузите 200-500 КБ JS, если пользователь не доскроллил. - Для статичной карты «адрес офиса» используйте Static Maps API — это PNG-картинка, без JS вообще.
- Маркеры > 1000 — кластеризация обязательна.
- На мобильных снижайте
maxZoomиminZoom— спасает от ненужных tile-запросов.
Безопасность ключей
API-ключ Яндекса домен-ограниченный — в кабинете указываете, на каких HTTPS-доменах он работает. Если кто-то скопирует — на чужом домене не заработает. Поэтому ключ можно держать в NEXT_PUBLIC_* без страха.
2GIS — то же самое: domain restriction в кабинете.
MapTiler — ключ ограничивается по domain referrer плюс по типу tile.
Итого
Для большинства российских проектов выбор — Yandex или 2GIS. Если важны кастомный стиль и независимость от вендора — MapLibre + MapTiler. Не пытайтесь подключить Google Maps в обход — это нарушение ToS и риск, что аккаунт зарубежный закроется в любой момент.
Частые вопросы
Можно ли в 2026 использовать Google Maps в России?
Технически карта работает (тайлы отдаются), но новые API-ключи получить нельзя без иностранной карты, и оплата невозможна с российских карт. Старые ключи продолжают работать, пока биллинг с зарубежного аккаунта оплачивается. Для нового проекта это нерабочий вариант — завтра аккаунт может быть заблокирован.
Сколько стоит карта для маленького корпоративного сайта?
Yandex Maps бесплатно при 25 000 загрузок в сутки — на корпоративном сайте это потолок никогда не достигается. 2GIS базовая карта бесплатна без лимитов. MapLibre сама по себе бесплатна, MapTiler-тайлы бесплатно до 100k запросов в месяц. Для лендинга «карта на странице контактов» все три варианта стоят 0 ₽.
Что выбрать для логистики и доставки?
2GIS — у них самые точные пробки в регионах России и сильное API маршрутизации с учётом ограничений (грузовые маршруты, веса). Если работаете с фурами и сложными перевозками, имеет смысл смотреть в сторону Яндекс Маршрутизации (отдельный продукт под B2B-логистику) — там решение задач коммивояжёра и распределения курьеров из коробки.
Можно ли покрасить Yandex Maps под цвета бренда?
Только частично. Через кастомные стили JS API 3.0 можно поменять цвет воды, дорог, зданий — по слоям. Полная свобода (например, монохромная карта в брендовом цвете) — только в MapLibre, где стиль JSON и можно перерисовать всё.
Как сделать оффлайн-карту в PWA?
Только MapLibre с MBTiles или PMTiles форматом. Тайлы предзагружаются в кеш, маршрутизация делается локально через Valhalla или OSRM на воркере. Это нетривиальная задача — недели работы и 50-200 МБ кеша на устройстве. Yandex и 2GIS офлайн не работают принципиально.
Геокодер от Яндекса можно использовать в коммерческом продукте?
Можно при соблюдении лимитов и условий. Для большинства задач (1-5 тысяч геокодирований в день) хватает бесплатного тарифа. Если нужно больше — платный, или используйте свой инстанс Nominatim на OSM-данных (есть готовые Docker-образы, нужен сервер с 4-8 ГБ RAM на полный планетарный экстракт).
Что делать, если нужна карта в стилистике, не похожей на стандартную?
Только MapLibre. Стиль описывается JSON-файлом — можно перекрасить каждый слой, изменить шрифты, скрыть лишние объекты, добавить свои PNG-маркеры. Готовые красивые стили есть на MapTiler Cloud и stadia. Для уникального стиля под бренд — заказать у дизайнера, который умеет работать с Mapbox Studio (он экспортирует JSON, совместимый с MapLibre).