Архитектура визуализации в Mapbox GL JS основана на декларативной модели стилей, где карта формируется из набора источников данных (sources) и слоёв (layers). Слои определяют способ отображения географических данных, а их комбинации формируют итоговую визуальную сцену.
Слой в Mapbox GL JS представляет собой объект стиля, который:
Понимание системы слоёв критично для управления визуальной сложностью карты, производительностью и логикой отображения данных.
Каждый слой имеет строго определённый тип, который определяет способ рендеринга геометрии.
Используется для заливки полигонов.
Основные сценарии:
Ключевые свойства:
fill-color — цвет заливки;fill-opacity — прозрачность;fill-outline-color — обводка полигона.Используется для линий и полилиний.
Применение:
Ключевые свойства:
line-color — цвет линии;line-width — толщина;line-dasharray — пунктир;line-join, line-cap — стиль соединений и
концов.Слой для текста и иконок.
Используется для:
Основные свойства:
text-field — текст;text-size — размер шрифта;text-font — шрифт;icon-image — изображение иконки;text-anchor — позиционирование текста.Отображение точек в виде кругов.
Применение:
Свойства:
circle-radius — радиус;circle-color — цвет;circle-stroke-width — обводка;circle-opacity — прозрачность.Слой тепловых карт.
Используется для анализа плотности:
Основные параметры:
heatmap-weight — вес точки;heatmap-intensity — интенсивность;heatmap-radius — радиус влияния;heatmap-color — градиент.3D-экструзия полигонов.
Применение:
Ключевые свойства:
fill-extrusion-height — высота;fill-extrusion-color — цвет;fill-extrusion-opacity — прозрачность;fill-extrusion-base — базовая высота.Отображение растровых тайлов.
Используется для:
Свойства:
raster-opacity — прозрачность;raster-brightness-min/max — яркость;raster-hue-rotate — поворот оттенков.Фоновый слой карты.
Особенности:
Свойства:
background-color;background-opacity;background-pattern.Каждый слой разделён на две ключевые группы свойств.
Отвечает за геометрическое и структурное поведение слоя до рендеринга.
Примеры:
visibility);Определяет визуальные характеристики, применяемые на этапе отрисовки.
Примеры:
Разделение на layout и paint позволяет оптимизировать рендеринг: layout вычисляется реже, paint может пересчитываться динамически.
Слои в Mapbox GL JS образуют упорядоченный стек. Порядок в массиве
style.layers напрямую влияет на визуальное перекрытие.
Особенности:
Управление порядком осуществляется через:
addLayer(layer, beforeId?);moveLayer(id, beforeId?).Слои могут содержать фильтры, ограничивающие отображение объектов из источника.
Фильтры поддерживают логические операторы:
==, !=;>, <, >=,
<=;in, !in;all, any, none.Пример логики:
Фильтры выполняются на стороне рендера и не требуют модификации источника.
Каждый слой может иметь ограничения по зуму:
minzoom;maxzoom.Это позволяет:
Mapbox GL JS использует систему выражений для динамического управления стилями.
Возможности:
Примеры сценариев:
Выражения позволяют отказаться от императивной логики в коде и перенести её в стиль карты.
Слой всегда привязан к источнику (source). Источник
определяет тип данных:
Связь слоя и источника является ключевой:
Mapbox GL JS предоставляет методы для управления слоями в рантайме:
map.addLayer({
id: 'roads',
type: 'line',
source: 'streets',
paint: {
'line-color': '#333',
'line-width': 2
}
});
map.moveLayer('roads', 'water');
map.getLayer('roads');
map.removeLayer('roads');
Помимо слоёв, визуальная и функциональная структура карты включает набор компонентов, которые формируют пользовательский интерфейс и поведение карты.
Контролы добавляются поверх карты и не участвуют в рендеринге геоданных.
Обеспечивает базовую навигацию:
Отображает масштабную линейку, адаптируемую к текущему зуму.
Отвечает за отображение атрибуции источников данных.
Переключает карту в полноэкранный режим.
Компонент камеры определяет, как пользователь видит карту:
center);zoom);pitch);bearing).Изменение камеры влияет на:
Компоненты и слои взаимодействуют через события:
События позволяют связывать визуальные элементы карты с логикой приложения без прямого доступа к DOM.
Слои и компоненты формируют единое пространство карты, где:
Эта структура обеспечивает разделение ответственности и масштабируемость при построении сложных картографических приложений.