Системы координат в Leaflet

В основе работы с картами в Leaflet лежит абстракция географических координат, представляемых объектом LatLng. Каждая точка описывается парой значений: широта (latitude) и долгота (longitude). Эта система соответствует стандарту WGS84 и обычно обозначается как EPSG:4326.

Широта измеряется от −90 до +90 градусов и определяет положение относительно экватора. Долгота изменяется от −180 до +180 градусов и определяет положение относительно нулевого меридиана.

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


Проекционная система Web Mercator

Для визуализации карт в браузере применяется проекция Web Mercator (EPSG:3857). Именно она является стандартной в большинстве веб-картографических систем.

Суть проекции заключается в преобразовании сферических координат в плоскую прямоугольную систему координат. Это позволяет:

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

Искажения неизбежны: вблизи полюсов объекты визуально увеличиваются, а области становятся непропорциональными. Несмотря на это, Web Mercator обеспечивает удобство и производительность, что делает его де-факто стандартом.


CRS: система координат в Leaflet

В Leaflet система координат определяется через объект CRS (Coordinate Reference System). Он задаёт правила преобразования между:

  • географическими координатами (LatLng);
  • проекцией карты;
  • пиксельными координатами слоя.

Основная используемая система:

  • L.CRS.EPSG3857 — стандартная Web Mercator проекция.

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

CRS определяет:

  • способ проекции (project);
  • обратное преобразование (unproject);
  • размеры тайлов;
  • поведение масштабирования.

Пиксельные координаты и слой карты

Помимо географических координат существует промежуточный уровень — layerPoint.

Он представляет собой координаты в пикселях относительно текущего состояния карты (центр, zoom, трансформации).

Основные типы координат в Leaflet:

  • LatLng — географические координаты;
  • Point — пиксельные координаты;
  • LayerPoint — пиксельные координаты в системе слоя карты.

Разделение этих систем позволяет отделить математическую модель карты от её визуального представления.


Преобразования координат

Leaflet использует несколько ключевых операций преобразования.

Проекция географических координат

Переход от LatLng к проекции CRS:

  • project(latlng) — перевод в координаты проекции (обычно EPSG:3857);
  • unproject(point) — обратное преобразование.

Эти операции выполняются на уровне CRS и не зависят от текущего масштаба.


Преобразование в координаты слоя

Связь между географическими и экранными координатами осуществляется через:

  • latLngToLayerPoint(latlng) — перевод в пиксели слоя;
  • layerPointToLatLng(point) — обратное преобразование.

Эти методы учитывают:

  • текущий zoom;
  • смещение центра карты;
  • трансформации контейнера.

Глобальные пиксельные координаты

Leaflet также использует глобальную систему координат карты:

  • latLngToPoint(latlng, zoom) — перевод в глобальные пиксели;
  • pointToLatLng(point, zoom) — обратное преобразование.

Эта система не зависит от DOM и используется для расчёта тайлов и геометрии карты.


Масштабирование и уровни zoom

Система масштабирования в Leaflet основана на степенной зависимости:

  • каждый уровень zoom увеличивает детализацию в 2 раза;
  • координаты пересчитываются в экспоненциальной шкале.

В Web Mercator координаты после проекции нормализуются в диапазон, который затем масштабируется в зависимости от zoom:

  • при zoom = 0 карта представлена одним тайлом;
  • при увеличении zoom количество тайлов увеличивается по сетке 2ⁿ × 2ⁿ.

Это создаёт строгую и предсказуемую сеточную структуру координат.


Тайловая сетка и координатная модель

Карта в Leaflet разбивается на квадратные тайлы фиксированного размера (обычно 256×256 пикселей).

Каждый тайл имеет координаты:

  • X — горизонтальный индекс;
  • Y — вертикальный индекс;
  • Z — уровень zoom.

Система координат тайлов напрямую связана с Web Mercator:

  • долгота определяет положение по оси X;
  • широта после проекции определяет положение по оси Y.

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


Плоская система координат L.CRS.Simple

Для изображений, планов помещений и негеографических карт используется система:

  • L.CRS.Simple

В этой модели:

  • отсутствует проекция на сферу;
  • координаты интерпретируются как линейные значения;
  • zoom работает как масштабирование изображения.

Оси координат:

  • X — горизонтальная позиция;
  • Y — вертикальная позиция;

При этом единицы измерения становятся абстрактными (пиксели или произвольные координаты).

Эта система применяется для:

  • игровых карт;
  • чертежей;
  • схем помещений;
  • изображений с координатной привязкой.

Трансформация координат и математика проекции

Внутренние преобразования Leaflet опираются на матрицу трансформации:

  • масштабирование;
  • смещение;
  • нормализация координат.

Web Mercator использует логарифмическое преобразование широты:

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

Это позволяет сохранить прямоугольную форму карты при отображении на плоскости.


Практическая структура координатной модели

Координатная система Leaflet строится как иерархия уровней:

  1. LatLng (географический уровень) Абстрактные координаты Земли.

  2. CRS (проекционный уровень) Перевод в математическую плоскость.

  3. Point (глобальные пиксели) Единая система координат карты.

  4. LayerPoint (экранный уровень) Координаты относительно текущего вида.

  5. Tile coordinates (сеточный уровень) Разбиение карты на фрагменты.

Каждый уровень решает отдельную задачу: от географической точности до отрисовки интерфейса.


Поведение координат при взаимодействии с картой

При перемещении карты изменяется не географическая модель, а трансформация слоя:

  • центр карты смещается в пикселях;
  • все объекты пересчитываются относительно нового origin;
  • географические координаты остаются неизменными.

При изменении zoom происходит:

  • перерасчёт масштаба CRS;
  • перераспределение тайлов;
  • изменение плотности пиксельной сетки.

Таким образом координатная система отделена от визуального состояния и функционирует как независимая математическая модель.