Слой circle в MapLibre GL JS используется для
визуализации точечных данных в виде окружностей на карте. Он
предназначен для отображения объектов, представленных геометрией типа
Point и MultiPoint, и является одним из
базовых инструментов стилизации GeoJSON-источников.
Главная особенность заключается в том, что каждый объект слоя интерпретируется как независимая графическая сущность, параметры которой могут динамически изменяться в зависимости от масштаба, свойств данных и выражений стиля.
Слой добавляется в стиль карты через метод addLayer, где
указывается тип circle и источник данных.
map.addSource('points', {
type: 'geojson',
data: {
type: 'FeatureCollection',
features: [
{
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [69.2401, 41.2995]
},
properties: {
magnitude: 5
}
}
]
}
});
map.addLayer({
id: 'circle-layer',
type: 'circle',
source: 'points'
});
Источник данных должен содержать геометрию точек. Любая не-точечная геометрия игнорируется.
Определяет радиус окружности в пикселях. Поддерживает интерполяцию и выражения.
'circle-radius': 10
Динамическое изменение радиуса в зависимости от свойства объекта:
'circle-radius': [
'interpolate',
['linear'],
['get', 'magnitude'],
1, 4,
10, 20
]
Определяет цвет заливки круга. Поддерживает любые CSS-подобные цветовые значения и выражения.
'circle-color': '#ff5722'
Пример условной окраски:
'circle-color': [
'case',
['>', ['get', 'magnitude'], 5],
'#e53935',
'#1e88e5'
]
Контролирует прозрачность слоя в диапазоне от 0 до 1.
'circle-opacity': 0.7
Используется для визуального наложения плотных наборов точек без потери читаемости.
Цвет обводки круга, визуально отделяющий объекты от фона и друг от друга.
'circle-stroke-color': '#000000'
Толщина обводки в пикселях.
'circle-stroke-width': 2
Комбинация с прозрачной заливкой часто используется для кластеров и плотных распределений.
Размытие окружности. Значения ближе к 1 создают эффект свечения.
'circle-blur': 0.3
Применяется для тепловых визуальных эффектов и мягкой агрегации точек.
Смещение круга относительно координат точки.
'circle-translate': [10, 5]
Используется для компенсации перекрытий или визуального разделения слоёв.
Определяет систему координат смещения:
map — смещение относительно картыviewport — смещение относительно экрана'circle-translate-anchor': 'viewport'
Определяет изменение размера кругов при наклоне карты:
map — размер сохраняется в пространстве картыviewport — сохраняется в экранных пикселях'circle-pitch-scale': 'map'
Управляет выравниванием при наклоне:
map — следует географической плоскостиviewport — фиксируется относительно экрана'circle-pitch-alignment': 'viewport'
Circle-слой поддерживает полноценную систему выражений MapLibre GL JS. Это позволяет строить динамическую визуализацию на основе данных.
'circle-radius': [
'interpolate',
['exponential', 1.5],
['zoom'],
5, 2,
15, 20
]
На малом масштабе точки уменьшаются, на крупном увеличиваются.
Фильтрация объектов выполняется через filter в описании
слоя.
filter: ['>', ['get', 'population'], 1000]
Используется для ограничения отображаемых точек по условию свойств.
При высокой плотности данных круги могут перекрывать друг друга. Управление визуальной иерархией осуществляется через:
addLayer порядок)Дополнительно применяется clustering на уровне источника GeoJSON:
map.addSource('points', {
type: 'geojson',
data: geojsonData,
cluster: true,
clusterRadius: 50
});
Circle-слои часто используются в связке с событиями карты.
map.on('click', 'circle-layer', (e) => {
const feature = e.features[0];
});
Поддерживаемые события:
Для активации событий требуется включение
interactive layers.
Circle-слои относятся к наиболее производительным типам визуализации, так как используют простую геометрию и GPU-ускоренную отрисовку.
Факторы влияния на производительность:
При работе с большими массивами данных оптимизация достигается через:
minzoom: 3,
maxzoom: 14
Отображение географических событий с интенсивностью через радиус и цвет.
Визуализация распределений значений через градиенты и масштабируемые круги.
Динамическое обновление координат с переотрисовкой слоя.
Эти ограничения компенсируются комбинацией с другими слоями, такими
как symbol, heatmap и fill.