В библиотеке Mapbox GL JS наклон карты управляется параметром pitch — углом наклона камеры относительно поверхности земли. Значение pitch измеряется в градусах и определяет, насколько сильно карта «наклонена» в перспективе:
0 — полностью ортографический вид сверху~45 — умеренная перспектива>60 — выраженный 3D-эффект~85–89 — почти горизонтальный взгляд вдоль
поверхностиПараметр pitch является частью камеры вместе с center, zoom и bearing, образуя единое состояние визуализации сцены.
Ограничение угла наклона задаётся через свойства
minPitch и maxPitch. Они контролируют
допустимый диапазон значений, которые может принимать камера:
minPitch — минимальный угол наклонаmaxPitch — максимальный угол наклонаconst map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12',
center: [37.6173, 55.7558],
zoom: 12,
pitch: 30,
minPitch: 0,
maxPitch: 60
});
В данном случае пользователь не сможет наклонить карту ниже 0° и выше 60°, даже при использовании жестов или программного управления камерой.
Помимо конфигурации при создании карты, ограничения могут изменяться динамически:
map.setMinPitch(10);
map.setMaxPitch(75);
Эти методы переопределяют текущие ограничения без необходимости пересоздания карты. Изменения применяются сразу ко всем последующим интерактивным и программным действиям камеры.
Ограничения pitch влияют на несколько типов взаимодействий:
Если включено dragRotate и pitchWithRotate,
пользователь может одновременно вращать и наклонять карту. При
достижении границы:
На мобильных устройствах:
minPitch или maxPitch жест
теряет эффект увеличения углаПри использовании 3D-слоёв и рельефа ограничения угла наклона приобретают функциональное значение.
При включённом рельефе:
map.setTerrain({ source: 'mapbox-dem', exaggeration: 1.5 });
малые значения pitch (0–10°) часто теряют смысл, так как рельеф визуально «не раскрывается». В таких случаях минимальный угол обычно повышается до 30–40°.
При больших значениях pitch:
Поэтому maxPitch часто ограничивается диапазоном 60–70°
для интерфейсов с высокой плотностью данных.
Изменение наклона через API камеры выполняется методом
setPitch:
map.setPitch(45);
С учётом ограничений значение автоматически нормализуется:
pitch > maxPitch, применяется
maxPitchpitch < minPitch, применяется
minPitchТакже поддерживается анимация:
map.easeTo({
pitch: 60,
duration: 1200
});
Анимация всегда учитывает ограничения диапазона, не выходя за них.
Pitch тесно взаимодействует с углом поворота карты
(bearing). При комбинированных изменениях:
При необходимости поддержания строгой ориентации сцены часто фиксируется либо bearing, либо pitch:
map.dragRotate.disable();
map.setMaxPitch(40);
Метод fitBounds учитывает pitch при расчёте итогового
положения камеры:
map.fitBounds([
[37.4, 55.5],
[37.8, 55.9]
], {
pitch: 50
});
При высоком pitch увеличивается потребность в отступах, так как перспектива «сжимает» видимую область. В результате:
Выбор значений minPitch и maxPitch
определяется типом интерфейса:
minPitch: 0–10maxPitch: 45–60 Основной акцент на читаемость и
стабильностьminPitch: 30–40maxPitch: 70–85 Фокус на объём и глубину сценыminPitch: 0maxPitch: 30 Минимизация перспективных искаженийУвеличение pitch напрямую влияет на стоимость рендеринга:
Жёсткое ограничение максимального угла снижает вероятность просадок FPS на слабых устройствах.
Pitch входит в объект камеры и может быть извлечён через:
const camera = map.getCameraState();
При этом значение всегда находится в пределах заданных ограничений, что упрощает синхронизацию состояния с внешними интерфейсами и анимационными системами.