В Mapbox GL JS слой (layer) представляет собой визуальный уровень, который описывает, как географические данные из источника (source) должны быть отрисованы на карте. Каждый слой привязан к одному источнику данных или к данным стиля и управляет их отображением через набор свойств paint и layout.
Архитектура слоёв основана на декларативной модели: слой описывает правила рендеринга, а движок Mapbox GL самостоятельно оптимизирует отрисовку в WebGL.
Тип fill используется для отображения площадных
объектов: земельных участков, административных границ, водоёмов.
Ключевые особенности:
line слойОсновные свойства:
fill-color — цвет заливкиfill-opacity — прозрачностьfill-outline-color — цвет контураПример:
map.addLayer({
id: 'landuse',
type: 'fill',
source: 'landuse-source',
paint: {
'fill-color': '#2ecc71',
'fill-opacity': 0.5
}
});
Тип line применяется для отображения линейных геометрий:
дорог, маршрутов, границ, рек.
Характерные возможности:
Основные свойства:
line-colorline-widthline-opacityline-dasharrayline-join и line-capПример:
map.addLayer({
id: 'roads',
type: 'line',
source: 'roads-source',
paint: {
'line-color': '#3498db',
'line-width': 3
}
});
Тип symbol объединяет текстовые подписи и иконки. Это
наиболее сложный слой, так как он использует систему размещения
(placement engine), предотвращающую пересечения.
Возможности:
Основные свойства:
text-fieldtext-sizetext-fonticon-imageicon-sizetext-allow-overlapПример:
map.addLayer({
id: 'cities',
type: 'symbol',
source: 'cities-source',
layout: {
'text-field': ['get', 'name'],
'text-size': 14,
'icon-image': 'marker-15'
}
});
Тип circle предназначен для визуализации точек без
использования изображений.
Применяется для:
Особенности:
Основные свойства:
circle-radiuscircle-colorcircle-stroke-colorcircle-opacityПример:
map.addLayer({
id: 'earthquakes',
type: 'circle',
source: 'earthquakes-source',
paint: {
'circle-radius': 6,
'circle-color': '#e74c3c'
}
});
Тип heatmap используется для визуализации плотности
точек.
Механика основана на интерполяции влияния каждой точки на соседние области.
Ключевые параметры:
Основные свойства:
heatmap-weightheatmap-intensityheatmap-radiusheatmap-colorПример:
map.addLayer({
id: 'heat',
type: 'heatmap',
source: 'points-source',
paint: {
'heatmap-radius': 20,
'heatmap-intensity': 1
}
});
Тип fill-extrusion используется для создания трёхмерных
объектов на основе полигонов.
Применяется для:
Особенности:
Основные свойства:
fill-extrusion-heightfill-extrusion-basefill-extrusion-colorfill-extrusion-opacityПример:
map.addLayer({
id: 'buildings',
type: 'fill-extrusion',
source: 'buildings-source',
paint: {
'fill-extrusion-height': ['get', 'height'],
'fill-extrusion-color': '#888',
'fill-extrusion-opacity': 0.8
}
});
Тип raster отображает заранее подготовленные изображения
тайлов: спутниковые снимки, карты, сканированные данные.
Характеристики:
Основные свойства:
raster-opacityraster-brightness-minraster-brightness-maxПример:
map.addLayer({
id: 'satellite',
type: 'raster',
source: 'satellite-source'
});
Тип hillshade визуализирует рельеф местности на основе
данных высот (DEM).
Используется для:
Ключевые параметры:
Основные свойства:
hillshade-exaggerationhillshade-shadow-colorhillshade-highlight-colorТип background задаёт базовый фон карты.
Применяется как:
Основные свойства:
background-colorbackground-opacityПример:
map.addLayer({
id: 'bg',
type: 'background',
paint: {
'background-color': '#1e1e1e'
}
});
Тип sky используется для создания атмосферного окружения
в 3D-сценах.
Возможности:
Основные свойства:
sky-typesky-atmosphere-colorsky-opacityТип custom позволяет внедрять собственную WebGL-логику
поверх карты.
Используется для:
Особенности:
Слои в Mapbox GL JS формируют стек, где порядок добавления определяет визуальное наложение.
Принципы:
moveLayerПример управления порядком:
map.moveLayer('roads', 'labels');
Все типы слоёв поддерживают выражения, позволяющие изменять визуализацию на основе данных.
Примеры:
'circle-color': [
'case',
['>', ['get', 'mag'], 5],
'#ff0000',
'#00ff00'
]