В Mapbox GL JS камера карты определяется набором параметров, которые управляют тем, как пользователь воспринимает географическое пространство. Среди них ключевую роль играют pitch и bearing — два свойства, отвечающие за наклон и поворот карты в трёхмерной сцене WebGL.
Pitch задаёт угол наклона камеры относительно
поверхности земли. В плоском (2D) режиме значение pitch равно
0, камера смотрит строго сверху вниз. При увеличении
значения карта начинает «подниматься» в перспективу.
Диапазон pitch в Mapbox GL JS:
0 — полностью горизонтальный вид (ортографическая
проекция)60–75 градусов — типичный диапазон для навигационных
и визуальных эффектов85–89 градусов — почти горизонтальный взгляд вдоль
поверхностиПри максимальных значениях карта становится близкой к виду «с уровня земли», но без полного перехода в режим street-level.
map.setPitch(45);
или через параметры камеры:
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12',
center: [69.2401, 41.2995],
zoom: 12,
pitch: 45
});
map.easeTo({
pitch: 60,
duration: 2000
});
Pitch напрямую влияет на визуализацию 3D-слоёв, включая:
fill-extrusion)При увеличении pitch возрастает эффект глубины: объекты ближе к горизонту визуально сжимаются, создавая ощущение перспективы.
Bearing определяет угол поворота карты относительно
севера. По умолчанию север направлен вверх (bearing = 0).
Изменение bearing вращает всю сцену вокруг вертикальной оси.
Диапазон значений:
0 — север сверху90 — восток сверху180 — юг сверху-90 или 270 — запад сверхуmap.setBearing(30);
Инициализация карты с поворотом:
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/light-v11',
center: [69.2401, 41.2995],
zoom: 13,
bearing: 120
});
map.rotateTo(90, { duration: 1500 });
или комбинированное изменение камеры:
map.easeTo({
bearing: 180,
duration: 3000
});
Bearing используется для:
Pitch и bearing работают совместно как компоненты камеры. Их комбинация формирует полноценную 3D-ориентацию сцены.
Навигационный режим
Картографический обзор
Иммерсивная визуализация города
Mapbox GL JS предоставляет единый интерфейс управления состоянием камеры:
map.setCamera({
center: [69.2401, 41.2995],
zoom: 14,
pitch: 50,
bearing: 135
});
Такой подход позволяет синхронно изменять все параметры без промежуточных состояний.
При работе с pitch и bearing учитываются физические и рендеринговые ограничения WebGL:
Mapbox GL JS поддерживает управление pitch и bearing через жесты:
Программно поведение можно ограничить:
map.dragRotate.disable();
map.touchZoomRotate.disableRotation();
или, наоборот, принудительно включить:
map.dragRotate.enable();
Сброс ориентации карты:
map.resetNorth();
Плавное возвращение к нулевому bearing:
map.easeTo({
bearing: 0,
pitch: 0,
duration: 2000
});
Этот механизм часто используется в интерфейсах, где требуется вернуть карту в стандартное состояние после пользовательской навигации.
Следование за объектом
map.setBearing(course);
map.setPitch(60);
Обзор города
let angle = 0;
setInterval(() => {
angle += 1;
map.setBearing(angle);
}, 100);
Анимация «погружения»
map.flyTo({
pitch: 60,
zoom: 15,
duration: 4000
});