Mapbox GL JS предоставляет модель инициализации карты, в которой
начальная геометрия отображения задаётся через набор параметров
конструктора Map. Ключевыми среди них являются
center, zoom, а также вспомогательные свойства
bearing, pitch, maxBounds и
projection. Эти параметры формируют исходное состояние
камеры, определяющее, какая область мира будет видна пользователю при
первом рендере.
Создание экземпляра карты начинается с передачи конфигурационного объекта:
mapboxgl.accessToken = 'YOUR_TOKEN';
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12',
center: [69.2401, 41.2995],
zoom: 10
});
Параметр center задаёт долготу и широту в формате
[lng, lat]. Это важно: порядок всегда строго фиксирован, и
нарушение этого правила приводит к некорректному позиционированию
карты.
Параметр zoom определяет уровень масштабирования. В
Mapbox GL JS используется непрерывная шкала масштабов, где:
0 показывают весь мир,10–12 соответствуют уровню города,15+ приближают до уровня улиц и зданий.Координаты центра карты задаются в географической системе WGS84. Это означает, что:
lng) изменяется от -180 до
180,lat) изменяется от -85.0511 до
85.0511.При инициализации важно учитывать, что карта всегда стремится интерполировать положение камеры плавно, поэтому даже начальные значения могут быть скорректированы внутренними ограничениями проекции.
Пример более точной установки центра:
center: [37.6173, 55.7558] // Москва
Параметр zoom влияет на плотность отображаемых тайлов и
уровень детализации:
zoom: 12
Внутри движка используется логарифмическая зависимость: каждый следующий уровень увеличивает масштаб примерно в 2 раза.
Практическая особенность:
10.5,
13.2)После инициализации можно управлять масштабом:
map.setZoom(14);
или плавно:
map.zoomTo(14, { duration: 2000 });
Параметр maxBounds фиксирует границы перемещения
камеры:
const bounds = [
[68.0, 40.0], // юго-запад
[71.0, 43.0] // северо-восток
];
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12',
center: [69.2401, 41.2995],
zoom: 10,
maxBounds: bounds
});
Это предотвращает уход камеры за пределы заданного региона, что особенно важно для прикладных систем (логистика, мониторинг, локальные сервисы).
Начальное состояние камеры может включать:
bearing: 0,
pitch: 0
bearing — поворот карты относительно севера (в градусах
по часовой стрелке)pitch — наклон камеры (0–85°)Пример:
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/satellite-streets-v12',
center: [30.3141, 59.9386],
zoom: 13,
bearing: 45,
pitch: 60
});
При увеличении pitch карта переходит в псевдо-3D режим,
в котором здания и рельеф визуально «поднимаются» над поверхностью.
Вместо фиксированного center и zoom часто
используется метод вычисления границ:
const bounds = [
[30.0, 59.8],
[30.6, 60.1]
];
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12'
});
map.fitBounds(bounds, {
padding: 40,
maxZoom: 14
});
Этот механизм автоматически:
Параметры minZoom и maxZoom задают
допустимый диапазон масштабирования:
minZoom: 5,
maxZoom: 18
Это ограничивает взаимодействие пользователя и позволяет контролировать уровень детализации данных.
Пример использования:
Внутренне состояние камеры представляет собой объект, объединяющий:
Эти параметры синхронизируются с объектом map.transform,
который обновляется при каждом взаимодействии пользователя или
программном изменении состояния.
Пример программного управления:
map.setCenter([69.2401, 41.2995]);
map.setZoom(11);
map.setBearing(20);
map.setPitch(30);
Если center и zoom не указаны, Mapbox GL JS
использует стиль и его metadata, а также встроенные дефолтные
значения:
[0, 0]0Однако в реальных приложениях это почти всегда приводит к нежелательному начальному виду, так как пользователь видит весь мир без контекста.
center: [55.2708, 25.2048],
zoom: 10
Используется для городских сервисов.
center: [long, lat],
zoom: 15,
pitch: 45,
bearing: 90
Используется для POI и навигационных интерфейсов.
map.fitBounds(regionBounds, {
padding: 60
});
Используется для аналитических панелей и геоданных.
Начальные параметры камеры применяются после загрузки style. Это означает, что:
При этом изменение style через setStyle может сбрасывать
часть параметров, если они не сохраняются явно:
map.setStyle('mapbox://styles/mapbox/light-v11');
map.once('style.load', () => {
map.jumpTo({ center: [69.24, 41.29], zoom: 11 });
});