Legan Studio
Все статьи
~ 6 мин чтения

Карты на сайте: Yandex Maps vs 2GIS vs MapLibre

Выбираем карту для сайта в РФ: что выбрать в 2026, ограничения API, лимиты, цены, кастомизация, маркеры, маршруты, работа с геокодированием.

  • веб
  • интеграции
  • ux

В 2022 Google Maps API стал недоступен по оплате из РФ. С тех пор каждый новый проект задаёт один и тот же вопрос: какая карта в России работает, ничего не отвалится завтра, и сколько это стоит. Разбираем три реалистичных варианта.

Кратко: что выбрать

СценарийВыбор
Простая карта с одним маркером для контактовYandex Maps JS API
Карта с маршрутами и геокодером, B2CYandex 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 в России неоднородная (Москва-Петербург отличные, малые города хуже).

Сравнение

КритерийYandex2GISMapLibre
Покрытие Россиитоптоп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 APIhttps://geocode-maps.yandex.ru/1.x/?apikey=...&geocode=Москва,Тверская+12
  • 2GIS Catalog APIhttps://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).