Стиль-выражения (Style Expressions) представляют собой декларативный
язык описания логики рендеринга слоёв, где геометрия объекта становится
первичным источником данных для вычислений. В рамках MapLibre GL JS
выражения позволяют работать не только с атрибутами свойств
properties, но и с самой структурой геометрии: типом,
положением, контекстом отображения и зависимостями от масштаба.
Геометрические выражения встроены в систему style specification и используются в paint/layout свойствах, фильтрах и вычисляемых значениях.
Каждый объект в источниках данных MapLibre GL JS описывается в формате GeoJSON и включает:
Геометрия становится доступной внутри выражений через контекст feature, где движок может извлекать тип и использовать его для условной логики отображения.
Ключевое выражение для работы с геометрией —
geometry-type. Оно возвращает строку, описывающую тип
текущего объекта.
Пример логики:
Использование позволяет строить условные стили:
Пример выражения:
[
"match",
["geometry-type"],
"Point", "circle",
"LineString", "line",
"Polygon", "fill",
"unknown"
]
Такой подход позволяет создавать единый слой, адаптирующийся к типу геометрии без разделения источников.
Фильтры в style specification позволяют ограничивать отображение объектов по их геометрическим характеристикам.
Типичная конструкция:
filter: ["==", ["geometry-type"], "LineString"]
Или комбинированная логика:
filter: [
"any",
["==", ["geometry-type"], "Polygon"],
["==", ["geometry-type"], "MultiPolygon"]
]
Фильтрация по геометрии особенно важна при работе с универсальными источниками данных, где один набор features содержит разные типы объектов.
Геометрические выражения часто комбинируются с zoom,
поскольку визуальная интерпретация геометрии зависит от уровня
приближения.
Типовой паттерн:
[
"interpolate",
["linear"],
["zoom"],
5, 1,
10, 2,
15, 4
]
Хотя само выражение не оперирует геометрией напрямую, оно влияет на:
Геометрия становится контекстом, в котором масштаб определяет визуальную интерпретацию структуры объекта.
Сложные стили часто строятся на комбинации:
geometry-typecase / matchzoomПример дифференциации объектов:
[
"case",
["==", ["geometry-type"], "Point"],
"#ff0000",
["==", ["geometry-type"], "LineString"],
"#0000ff",
"#00ff00"
]
Такой подход позволяет:
Layout свойства в MapLibre GL JS используют геометрию для определения поведения объектов на карте.
Примеры:
Для Point-геометрий используются параметры:
icon-imagetext-fieldtext-anchorОни интерпретируются относительно координаты геометрии.
LineString влияет на:
Геометрия определяет траекторию отрисовки, а не только набор координат.
Polygon-геометрии задают:
Геометрическая структура определяет порядок обхода вершин и корректность заливки.
Feature-state позволяет хранить динамическое состояние объекта, которое может зависеть от геометрии.
Примеры состояний:
Геометрия определяет:
Пример:
[
"case",
["boolean", ["feature-state", "hover"], false],
1.5,
1
]
Хотя выражение работает со state, его применение всегда привязано к геометрической сущности объекта.
Expressions позволяют накладывать ограничения на отображение объектов в зависимости от их пространственной структуры.
Примеры логических условий:
Комбинация:
[
"all",
["==", ["geometry-type"], "Polygon"],
["has", "elevation"]
]
Геометрические выражения вычисляются на этапе рендеринга WebGL пайплайном, поэтому их сложность напрямую влияет на производительность.
Ключевые ограничения:
Рекомендации архитектуры стиля:
case и matchgeometry-typeОдно из ключевых применений выражений — связывание геометрии с визуальными параметрами через данные.
Пример масштабирования радиуса точки:
[
"interpolate",
["linear"],
["zoom"],
0, 2,
10, 6,
15, 12
]
Хотя выражение не обращается напрямую к координатам, оно изменяет визуальное восприятие геометрии Point-объектов.
Геометрические выражения в MapLibre GL JS имеют ограничения архитектурного уровня:
Вместо этого используется комбинация:
Геометрия в системе выражений становится фундаментом, вокруг которого строится логика визуализации:
В результате стиль карты перестаёт быть статическим описанием и превращается в вычисляемую модель отображения пространственных данных, где геометрия выступает центральным элементом всей логики рендеринга.