Другие проекции

Система проекций в MapLibre GL JS определяет, как географические координаты (долгота, широта) преобразуются в экранное пространство и каким образом плоская или сферическая модель мира отображается пользователю. В основе большинства веб-карт традиционно лежит проекция Web Mercator (EPSG:3857), однако современные графические возможности позволяют использовать и альтернативные модели, включая глобусную визуализацию и пользовательские преобразования координат.

Векторные и растровые тайлы в MapLibre GL JS чаще всего публикуются в системе EPSG:3857. Это псевдосферическая проекция, в которой Земля «развёрнута» на плоскость с сохранением углов, но с искажением площадей, особенно заметным на высоких широтах.

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

  • прямые линии рендерятся как прямые на карте
  • углы сохраняются (конформность)
  • искажения возрастают к полюсам
  • простая тайловая схема (XYZ)

Внутренне библиотека оперирует преобразованием:

  • WGS84 (EPSG:4326) → Web Mercator (EPSG:3857) → пиксельные координаты

Это обеспечивает совместимость с подавляющим большинством источников тайлов и стилевых спецификаций.

Параметр projection в стиле карты

Современные версии MapLibre GL JS поддерживают выбор проекции на уровне инициализации карты. Основная конфигурация задаётся через параметр projection:

import maplibregl from "maplibre-gl";

const map = new maplibregl.Map({
    container: "map",
    style: "https://demotiles.maplibre.org/style.json",
    center: [30, 50],
    zoom: 3,
    projection: {
        type: "mercator"
    }
});

Значение "mercator" соответствует классической плоской карте и используется по умолчанию, если параметр не задан.

Глобусная проекция

Одним из наиболее значимых расширений визуальной модели стала поддержка глобуса. В этом режиме карта перестаёт быть плоской и визуализируется как трёхмерная сфера.

const map = new maplibregl.Map({
    container: "map",
    style: "https://demotiles.maplibre.org/style.json",
    center: [0, 20],
    zoom: 1,
    projection: {
        type: "globe"
    }
});

Глобусная модель влияет не только на рендеринг, но и на поведение камеры:

  • перемещение происходит по поверхности сферы
  • масштабирование учитывает кривизну поверхности
  • переход через антимеридиан обрабатывается корректно
  • полярные области не «растягиваются» до бесконечности

Визуальные эффекты в глобусном режиме

Глобусная проекция часто сопровождается дополнительными слоями атмосферы и освещения:

  • атмосферное рассеивание (horizon haze)
  • затемнение ночной стороны
  • плавное затухание дальних объектов

Эти эффекты формируют восприятие реального космического вида Земли и уменьшают когнитивные искажения при работе с большими масштабами.

Антимеридиан и непрерывность мира

В плоской проекции Web Mercator мир фактически «разрезан» по 180° долготы. Это создаёт проблемы при:

  • построении маршрутов через Тихий океан
  • отображении геометрий, пересекающих дату-линии
  • рендеринге тайлов на границе мира

MapLibre решает это через:

  • тайловую репликацию по оси X
  • нормализацию координат
  • автоматическое дублирование геометрий

В глобусной проекции эта проблема исчезает, поскольку поверхность непрерывна.

Пользовательские проекции

Хотя встроенные режимы ограничены набором стандартных моделей, архитектура MapLibre допускает расширение поведения через низкоуровневые интерфейсы и математические преобразования координат.

Векторный пайплайн включает стадии:

  • географические координаты
  • проекция
  • экранные координаты
  • clip space (WebGL)

В пользовательских сценариях можно вмешиваться в этапы трансформации через:

  • кастомные слои (CustomLayerInterface)
  • матричные преобразования камеры
  • модификацию поведения источников данных

Пример кастомного слоя, визуально трансформирующего пространство:

const customLayer = {
    id: "custom-transform",
    type: "custom",
    renderingMode: "3d",

    onAdd(map, gl) {
        this.map = map;
        this.gl = gl;
    },

    render(gl, matrix) {
        // matrix содержит проекцию камеры
        // здесь можно применять дополнительные трансформации
    }
};

Хотя это не меняет базовую проекцию напрямую, подобный подход позволяет имитировать альтернативные геометрические модели.

Сравнение Mercator и Globe

Различия между двумя основными режимами проявляются не только визуально, но и в математике камеры.

Mercator:

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

Globe:

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

Переход между режимами влияет на:

  • поведение жестов вращения
  • интерпретацию zoom levels
  • clipping и culling объектов

Влияние проекции на слои карты

Разные типы слоёв ведут себя по-разному в зависимости от выбранной проекции:

  • Fill-слои: искажаются сильнее всего в Mercator на высоких широтах
  • Line-слои: сохраняют геометрическую корректность, но визуально растягиваются
  • Symbol-слои: требуют перерасчёта ориентации при глобусе
  • Raster-тайлы: всегда подчинены исходной проекции источника

Особое внимание требуется при работе с:

  • тепловыми картами
  • плотностными визуализациями
  • 3D extrusion слоями

Камера и математика преобразований

Камера в MapLibre GL JS описывается матрицами:

  • projection matrix
  • view matrix
  • model transformations

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

Основные параметры:

  • center: географический центр
  • zoom: логарифмическое масштабирование
  • bearing: поворот вокруг оси Z
  • pitch: наклон камеры

В глобусной проекции pitch ограничивается физическими свойствами сферы, что исключает «переворот» карты в бесконечность.

Практические аспекты выбора проекции

Выбор модели отображения влияет на архитектуру приложения:

  • аналитические системы чаще используют Mercator
  • визуализации мирового масштаба — Globe
  • географические дашборды требуют комбинированных подходов

Дополнительно учитываются:

  • источник данных (тайлы, GeoJSON, raster)
  • требуемая точность геометрии
  • производительность WebGL контекста
  • интерактивность интерфейса

Ограничения и особенности рендеринга

Несмотря на гибкость, система проекций имеет ограничения:

  • невозможность произвольных нелинейных проекций без глубокого вмешательства в пайплайн
  • зависимость от WebGL контекста
  • фиксированная модель тайловой сетки
  • ограниченная поддержка проекций вне Mercator/Globe без кастомной реализации

При этом архитектура остаётся расширяемой через слои и камеры, что позволяет адаптировать визуализацию под специализированные задачи.