Типы для слоев

В системе рендеринга MapLibre GL JS слой представляет собой базовую единицу визуализации данных на карте. Каждый слой описывает способ отображения геометрии или растровых данных и привязан к источнику данных (source). Архитектура слоёв построена вокруг строгого разделения типов, где каждый тип отвечает за конкретный визуальный стиль и поведение при отрисовке.


Fill — заливка полигонов

Тип fill используется для отображения полигональных геометрий с закрашиванием внутренней области.

Основные особенности:

  • применяется к данным типа Polygon и MultiPolygon
  • поддерживает заливку цветом, градиентами через выражения
  • может комбинироваться с обводкой через отдельный слой line

Ключевые свойства:

  • fill-color — цвет заливки
  • fill-opacity — прозрачность
  • fill-outline-color — цвет обводки (упрощённая альтернатива отдельному line-слою)
  • fill-pattern — текстурная заливка

Типичные сценарии:

  • административные границы
  • зоны покрытия
  • территориальные области анализа

Line — линейные объекты

Тип line применяется для визуализации линейной геометрии: дорог, маршрутов, рек, границ.

Особенности поведения:

  • поддержка переменной ширины линии
  • возможность построения пунктирных линий
  • сглаживание геометрии при масштабировании

Основные свойства:

  • line-color — цвет линии
  • line-width — толщина (может зависеть от масштаба)
  • line-opacity — прозрачность
  • line-dasharray — пунктирный стиль
  • line-blur — размытие краёв

Использование выражений позволяет динамически менять толщину и цвет в зависимости от масштаба или атрибутов данных.


Symbol — текст и иконки

Тип symbol объединяет текстовые подписи и иконографику. Это один из наиболее сложных типов слоёв, так как включает систему размещения (label placement engine).

Функциональность:

  • отображение текста (labels)
  • отображение иконок из sprite-атласа
  • комбинирование текста и иконок
  • управление столкновениями (collision detection)

Ключевые свойства:

  • text-field — содержимое текста
  • text-size — размер шрифта
  • text-font — семейство шрифтов
  • text-anchor — точка привязки
  • icon-image — имя иконки из спрайта
  • text-allow-overlap — разрешение наложения

Особенность:

  • система размещения оптимизирует видимость подписей, предотвращая перекрытия

Circle — точечные объекты

Тип circle используется для визуализации точечных данных без использования изображений.

Основные характеристики:

  • высокая производительность при большом количестве точек
  • поддержка масштабируемого радиуса
  • стилизация через атрибуты

Свойства:

  • circle-radius — радиус круга
  • circle-color — цвет заливки
  • circle-stroke-color — цвет обводки
  • circle-stroke-width — толщина обводки
  • circle-opacity — прозрачность

Применение:

  • визуализация событий
  • плотность точек
  • простые геоданные без сложной символики

Heatmap — тепловые карты

Тип heatmap используется для визуализации плотности точек.

Принцип работы:

  • каждая точка влияет на окружающую область
  • влияние суммируется и интерполируется
  • итоговое изображение представляет плотностное распределение

Основные свойства:

  • heatmap-weight — вес точки
  • heatmap-intensity — общая интенсивность
  • heatmap-radius — радиус влияния
  • heatmap-color — цветовая шкала
  • heatmap-opacity — прозрачность

Применение:

  • анализ скоплений пользователей
  • геостатистика
  • визуализация активности

Fill-extrusion — 3D здания

Тип fill-extrusion предназначен для построения трёхмерных объектов на основе полигонов.

Особенности:

  • поддержка высоты зданий
  • реалистичная перспектива
  • освещение и затенение

Основные свойства:

  • fill-extrusion-height — высота объекта
  • fill-extrusion-base — базовая высота
  • fill-extrusion-color — цвет
  • fill-extrusion-opacity — прозрачность
  • fill-extrusion-vertical-gradient — вертикальный градиент

Использование:

  • 3D карты городов
  • визуализация застройки
  • анализ рельефа зданий

Raster — растровые тайлы

Тип raster используется для отображения готовых изображений, разделённых на тайлы.

Особенности:

  • работа с тайловыми серверами
  • минимальная нагрузка на CPU
  • отсутствие геометрической интерпретации данных

Свойства:

  • raster-opacity — прозрачность
  • raster-brightness-min / max — регулировка яркости
  • raster-contrast — контрастность
  • raster-saturation — насыщенность

Применение:

  • спутниковые снимки
  • ортофотопланы
  • фоновые карты

Raster-dem — цифровые модели рельефа

Тип raster-dem предназначен для работы с высотными данными.

Функции:

  • генерация 3D рельефа
  • использование в hillshade-слоях
  • поддержка интерполяции высот

Свойства:

  • raster-dem-opacity
  • raster-dem-color

Использование:

  • создание террейна
  • визуализация высотности местности

Hillshade — затенение рельефа

Тип hillshade применяется для визуального отображения рельефа на основе DEM.

Принцип:

  • симуляция освещения поверхности
  • расчёт теней по углу солнца

Свойства:

  • hillshade-exaggeration — усиление рельефа
  • hillshade-shadow-color
  • hillshade-highlight-color
  • hillshade-accent-color

Применение:

  • топографические карты
  • визуальное усиление рельефа

Background — фон карты

Тип background задаёт базовый фон карты.

Особенности:

  • не привязан к источнику данных
  • отображается под всеми слоями

Свойства:

  • background-color
  • background-opacity
  • background-pattern

Использование:

  • нейтральные подложки
  • стилистическая основа карты

Custom layer — пользовательские слои

MapLibre GL JS поддерживает расширение через CustomLayerInterface, позволяя создавать полностью кастомные слои с WebGL-рендерингом.

Структура:

  • onAdd — инициализация ресурсов WebGL
  • render — основной цикл отрисовки
  • onRemove — очистка ресурсов

Возможности:

  • использование собственных шейдеров
  • интеграция WebGL сцен
  • синхронизация с матрицей карты

Применение:

  • визуализация сложных 3D сцен
  • интеграция игровых движков
  • научная визуализация

Системная организация типов слоёв

Архитектура слоёв построена на унифицированной модели:

  • источник данных (source)
  • тип визуализации (type)
  • стиль (paint)
  • правила размещения (layout)

Каждый тип слоя интерпретирует одни и те же геоданные по-разному, обеспечивая гибкость визуального представления без изменения источника информации.


Взаимодействие слоёв между собой

Слои обрабатываются в порядке z-index, определяемом последовательностью в стиле. Важные аспекты взаимодействия:

  • перекрытие слоёв регулируется порядком в style.layers
  • символы используют систему конфликтов для оптимального размещения
  • растровые слои формируют подложку
  • векторные слои накладываются поверх растровых

Такая модель позволяет строить сложные многослойные композиции без потери производительности.