В основе работы с картами в Leaflet лежит абстракция географических
координат, представляемых объектом LatLng. Каждая точка
описывается парой значений: широта (latitude) и долгота (longitude). Эта
система соответствует стандарту WGS84 и обычно обозначается как
EPSG:4326.
Широта измеряется от −90 до +90 градусов и определяет положение относительно экватора. Долгота изменяется от −180 до +180 градусов и определяет положение относительно нулевого меридиана.
Географические координаты не могут напрямую использоваться для отображения на плоском экране без преобразования, поскольку поверхность Земли имеет сфероидальную форму.
Для визуализации карт в браузере применяется проекция Web Mercator (EPSG:3857). Именно она является стандартной в большинстве веб-картографических систем.
Суть проекции заключается в преобразовании сферических координат в плоскую прямоугольную систему координат. Это позволяет:
Искажения неизбежны: вблизи полюсов объекты визуально увеличиваются, а области становятся непропорциональными. Несмотря на это, Web Mercator обеспечивает удобство и производительность, что делает его де-факто стандартом.
В 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) — обратное
преобразование.Эти методы учитывают:
Leaflet также использует глобальную систему координат карты:
latLngToPoint(latlng, zoom) — перевод в глобальные
пиксели;pointToLatLng(point, zoom) — обратное
преобразование.Эта система не зависит от DOM и используется для расчёта тайлов и геометрии карты.
Система масштабирования в Leaflet основана на степенной зависимости:
В Web Mercator координаты после проекции нормализуются в диапазон, который затем масштабируется в зависимости от zoom:
Это создаёт строгую и предсказуемую сеточную структуру координат.
Карта в Leaflet разбивается на квадратные тайлы фиксированного размера (обычно 256×256 пикселей).
Каждый тайл имеет координаты:
Система координат тайлов напрямую связана с Web Mercator:
Особенность системы заключается в том, что координаты увеличиваются экспоненциально с ростом zoom, формируя дерево тайлов.
Для изображений, планов помещений и негеографических карт используется система:
L.CRS.SimpleВ этой модели:
Оси координат:
При этом единицы измерения становятся абстрактными (пиксели или произвольные координаты).
Эта система применяется для:
Внутренние преобразования Leaflet опираются на матрицу трансформации:
Web Mercator использует логарифмическое преобразование широты:
Это позволяет сохранить прямоугольную форму карты при отображении на плоскости.
Координатная система Leaflet строится как иерархия уровней:
LatLng (географический уровень) Абстрактные координаты Земли.
CRS (проекционный уровень) Перевод в математическую плоскость.
Point (глобальные пиксели) Единая система координат карты.
LayerPoint (экранный уровень) Координаты относительно текущего вида.
Tile coordinates (сеточный уровень) Разбиение карты на фрагменты.
Каждый уровень решает отдельную задачу: от географической точности до отрисовки интерфейса.
При перемещении карты изменяется не географическая модель, а трансформация слоя:
При изменении zoom происходит:
Таким образом координатная система отделена от визуального состояния и функционирует как независимая математическая модель.