«Куда мы доставим за 30 минут?», «Сколько клиентов живёт в пяти минутах езды от магазина?», «Куда может добраться бригада за час?» Круг на карте даёт неверный ответ на каждый из этих вопросов: радиус 3 км вдоль реки, железной дороги или промзоны означает совсем разное время в пути. Правильный инструмент — изохрона, зона, до любой точки которой можно добраться из центра за заданное время по реальной дорожной сети. Разберём, как построить такие зоны в Karty, как узнать, сколько людей в них живёт, и где расчёт нельзя принимать за гарантию.
Что такое изохрона и чем она отличается от радиуса
Изохрона (от греч. «равное время») — многоугольник, ограничивающий всё, что достижимо из точки за N минут. Её контур повторяет форму дорожной сети: вытягивается вдоль магистралей, «втягивается» там, где нет мостов, и не пересекает реки и железные дороги в местах, где нет переезда. В Karty изохроны считаются по открытым данным OpenStreetMap и ограничениям скорости на дорогах; доступны четыре режима передвижения:
Режим (costing) | Для чего |
|---|---|
auto (по умолчанию) | Легковой автомобиль: зона доставки, выезд бригады, такси |
truck | Грузовой транспорт: учитывает ограничения для грузовиков |
bicycle | Велокурьеры, прокат самокатов и велосипедов |
pedestrian | Пешая доступность: кафе, аптека, остановка, школа |
За один запрос можно получить до трёх контуров (например, 5, 10 и 15 минут), каждый — не больше 60 минут.
Где это применяют
- Зона доставки. Вместо круглого радиуса на странице доставки показывается реальная зона, куда курьер успеет за 30 или 45 минут. Это же ограничивает заказы вне зоны на стороне сайта.
- Выбор места для точки. Для двух-трёх кандидатов на помещение строят одинаковые зоны на 10 минут пешком и сравнивают, сколько людей в них живёт. Это быстрее и дешевле, чем заказывать исследование.
- Зона обслуживания. Сервисные службы, выездные мастера и охранные компании показывают клиенту, обслуживается ли его адрес.
- Аналитика. Доля клиентов, живущих в 15 минутах от точки, — понятный показатель плотности сети.
Быстрый старт: зона в конструкторе встраивания
Проще всего увидеть, как это работает, в личном кабинете: раздел «Встраивание» → блок «Доп. функции» → переключатель «Зона доступности». В предпросмотре кликните в любое место карты — зона построится от этой точки.
map.isochrone(...).Результат — три вложенных зоны, окрашенные от центра к краю: самая близкая (5 минут) — зелёная, дальняя (15 минут) — красная. Ниже — тот же результат крупнее, для центра Барнаула.
В эту же панель кабинет подставляет строку кода, которую остаётся скопировать на сайт. Обратите внимание: в панели есть предупреждение «Ориентировочно, без учёта пробок — по ограничениям скорости дорог». Оно вынесено в интерфейс не случайно, и к нему мы вернёмся.
Код: зона доступности на вашем сайте
На странице нужны скрипт виджета, контейнер и вызов метода isochrone:
<script src="https://kartrout.ru/widget/karty.js"></script>
<div id="map" style="width:100%;height:480px"></div>
<script>
var map = Karty.map('map', { key: 'pk_live_ВАШ_КЛЮЧ', center: [83.7636, 53.3478], zoom: 11 });
map.isochrone([83.7636, 53.3478], { minutes: [5, 10, 15], costing: 'auto' })
.then(function (geojson) { console.log(geojson.features.length, 'зоны'); })
.catch(function (err) { console.error(err.message); });
</script>
Метод рисует зоны на карте и возвращает Promise с исходным GeoJSON. Убрать зоны можно вызовом map.clearIsochrone() — удобно, если посетитель переключает режим «на машине / пешком». Для зоны от адреса клиента сначала геокодируйте адрес (поиск по адресу), а затем передайте координаты в isochrone.
Прямой запрос к API
Если нужна не картинка, а данные — например, чтобы проверить на сервере, попадает ли адрес в зону, — запрашивайте изохрону напрямую:
GET https://kartrout.ru/v1/isochrone?lon=83.7636&lat=53.3478&contours=5,10,15&costing=auto&key=pk_live_...
Ответ — стандартный GeoJSON FeatureCollection: по одному многоугольнику на каждое значение времени, у каждого в properties.contour лежит число минут. Дальше с ним работает любая GIS-библиотека; чтобы определить, лежит ли точка внутри, достаточно стандартной проверки «точка в многоугольнике» (например, в Turf.js функция booleanPointInPolygon).
Каждый запрос — одна единица квоты «Зоны доступности», независимо от числа контуров. Лимиты по тарифам: 10 запросов за 30 дней на «Базовом», 150 на «Старте», 500 на «Бизнесе», 2 000 на «Масштабе». Если зоны нужны для каждой из многих точек, строить их лучше заранее и сохранять результат у себя, а не пересчитывать при каждом заходе посетителя.
Сколько людей живёт в зоне: параметр population=1
Добавьте к запросу population=1, и в каждый контур добавятся поля с оценкой численности населения внутри него:
GET https://kartrout.ru/v1/isochrone?lon=83.7636&lat=53.3478&contours=5,10,15&population=1&key=pk_live_...
// в properties каждого контура:
{ "contour": 10, "population": 312113,
"populationSource": "WorldPop Global 1km mosaic 2020", "populationYear": 2020,
"populationAttribution": "WorldPop.org (CC BY 4.0)" }
Для центра Барнаула, автомобиль, наш тестовый запрос 14 октября 2026 года вернул примерно 134 тыс. человек в 5-минутной зоне, 312 тыс. в 10-минутной и 408 тыс. в 15-минутной. Те же 10 минут пешком — около 12,5 тыс. человек. Разница между режимами иллюстрирует, зачем вообще считать зоны, а не рисовать круги.
Как читать цифрыЭто оценка по открытому растру WorldPop с ячейкой около 1 км за 2020 год, а не данные переписи. Для крупных зон (10–60 минут) погрешность невелика, для маленьких (3–5 минут пешком) оценка грубая: в зону попадает несколько ячеек, и граница проходит по их центрам. Используйте цифру для сравнения вариантов («здесь втрое больше жителей, чем там»), а не как точное число. При публикации результата сохраняйте указание источника из поля populationAttribution — это требование лицензии WorldPop (CC BY 4.0).
Население считается по всей России. Параметр работает и в запросах из браузера, и из серверного кода; в виджетовом методе map.isochrone() он пока не передаётся, поэтому для получения чисел используйте прямой запрос из примера выше.
Ограничения, о которых нужно знать честно
- Без пробок и светофоров. Время считается по ограничениям скорости дорог, а не по реальному трафику. В час пик фактическое время будет больше — как правило, заметно. Показывайте зону как ориентир («примерно 30 минут»), а не как обязательство.
- Качество зависит от карты. Если в OpenStreetMap нет проезда, моста или дороги, зона их не учтёт. В крупных городах данные подробные, в сельской местности возможны пропуски.
- Точка должна быть в зоне покрытия. Запросы вне поддерживаемой территории возвращают понятную ошибку, а не пустой контур.
- Максимум 60 минут и 3 контура в одном запросе: для сверхдальних расчётов используйте несколько запросов.
Практический порядок работы
- Определите вопрос: «куда доезжаем», «кто живёт рядом» или «что доступно пешком».
- Выберите режим и время. Для доставки продуктов типично 15–30 минут на автомобиле, для кофейни — 5–10 минут пешком.
- Постройте зону в конструкторе и оцените на глаз: совпадает ли контур с вашим представлением о районе. Если нет — это часто повод пересмотреть саму зону доставки.
- Подключите на сайт
map.isochrone()для посетителей или серверный запрос сpopulation=1для аналитики. - Зафиксируйте результат и пересчитывайте при изменении сети точек, а не при каждом визите.
Частые вопросы
Чем изохрона отличается от радиуса на карте?
Радиус — это окружность по прямой, изохрона — область, до любой точки которой можно добраться за заданное время по реальной дорожной сети. Контур изохроны вытягивается вдоль магистралей и учитывает реки, железные дороги и отсутствие проездов.
Учитываются ли пробки?
Нет. Время считается по ограничениям скорости дорог, а не по реальному трафику. В час пик фактическое время будет больше, поэтому зону стоит показывать как ориентир.
Какие режимы передвижения доступны?
Автомобиль (auto), грузовик (truck), велосипед (bicycle) и пешеход (pedestrian). За один запрос строится до трёх контуров, каждый — до 60 минут.
Как узнать, сколько людей живёт в зоне?
Добавьте к запросу изохроны параметр population=1: в каждый контур добавятся поля population, populationSource и populationYear. Это оценка по растру WorldPop с ячейкой около 1 км за 2020 год, работает по всей России.
Сколько стоит построение зоны?
Один запрос — одна единица квоты «Зоны доступности» независимо от числа контуров: 10 за 30 дней на «Базовом», 150 на «Старте», 500 на «Бизнесе», 2 000 на «Масштабе».