Базовая точка входа в работу с Leaflet — создание экземпляра карты
через конструктор L.map. Именно здесь формируется
контейнер, задаются начальные параметры отображения, состояние
взаимодействия и поведение карты. От корректной конфигурации этого
объекта зависит вся дальнейшая архитектура отображения слоёв, элементов
управления и пользовательских взаимодействий.
Конструктор карты имеет следующий базовый вид:
L.map(id, options)
или
L.map(element, options)
Где:
id — строка с идентификатором
DOM-элемента (div), внутри которого будет отрисована
картаelement — непосредственно
DOM-узелoptions — объект конфигурации
картыoptionsОбъект настроек определяет поведение карты на старте и в процессе работы.
centerОпределяет начальную географическую точку центра карты.
center: [latitude, longitude]
Пример:
center: [51.505, -0.09]
Особенности:
[lat, lng]setView, panTo)zoomНачальный масштаб отображения карты.
zoom: 13
Поведение:
minZoom и
maxZoomОграничивают диапазон масштабирования.
minZoom: 5,
maxZoom: 18
Назначение:
layersМассив слоёв, добавляемых сразу при создании карты.
layers: [tileLayer, marker, polyline]
Особенности:
addTo(map)maxBoundsОграничивает область перемещения карты.
maxBounds: [[southWestLat, southWestLng], [northEastLat, northEastLng]]
Пример:
maxBounds: [
[50, -5],
[55, 2]
]
Поведение:
crsСистема координат (Coordinate Reference System).
crs: L.CRS.EPSG3857
Основные варианты:
L.CRS.EPSG3857 — стандартная веб-меркатор проекция (по
умолчанию)L.CRS.EPSG4326 — географическая система координатВлияние:
zoomControlВключает или отключает стандартные кнопки масштабирования.
zoomControl: true
или
zoomControl: false
Особенности:
false управление масштабом нужно реализовывать
вручнуюattributionControlКонтролирует отображение атрибуции (копирайтов источников карт).
attributionControl: true
Назначение:
keyboardВключает управление картой с клавиатуры.
keyboard: true
Поведение:
+ / - управляют масштабомHome возвращает к начальному видуscrollWheelZoomУправляет масштабированием колесом мыши.
scrollWheelZoom: true
Возможные значения:
true — всегда включеноfalse — отключено'center' — масштабирование относительно центра
картыdraggingВключает перетаскивание карты мышью.
dragging: true
Особенности:
touchZoomПоддержка pinch-zoom на сенсорных устройствах.
touchZoom: true
doubleClickZoomУправляет поведением двойного клика.
doubleClickZoom: true
По умолчанию:
boxZoomПозволяет увеличивать область через выделение прямоугольника мышью.
boxZoom: true
const map = L.map('map', {
center: [51.505, -0.09],
zoom: 13,
minZoom: 4,
maxZoom: 18,
maxBounds: [
[50, -5],
[55, 2]
],
zoomControl: true,
attributionControl: true,
scrollWheelZoom: true,
dragging: true,
touchZoom: true,
doubleClickZoom: true,
boxZoom: false,
keyboard: true
});
Некоторые параметры взаимодействия могут конфликтовать:
dragging делает невозможным панорамирование,
даже при включённом keyboardmaxBounds ограничивает все формы перемещенияminZoom и maxZoom переопределяют поведение
любых контролов масштабированияoptions применяются только один раз — в момент создания
экземпляра:
const map = L.map('map', options);
Дальнейшие изменения требуют методов:
setViewsetZoomfitBoundssetMaxBounds{
dragging: false,
scrollWheelZoom: false,
doubleClickZoom: false,
zoomControl: false
}
Используется в отчётах, превью и аналитических панелях.
{
touchZoom: true,
dragging: true,
scrollWheelZoom: false
}
Ориентирована на жестовое управление.
{
maxBounds: [[55, 30], [45, 40]],
minZoom: 6,
maxZoom: 14
}
Используется для географически ограниченных приложений.
Некоторые опции косвенно влияют на нагрузку:
boxZoom и touchZoom увеличивают количество
событий обработкиmaxBounds снижает необходимость отрисовки вне
областиdragging уменьшает количество перерисовок
тайловПеред созданием карты контейнер должен иметь размеры:
<div id="map" style="height: 500px;"></div>
Если размеры отсутствуют, параметры center и
zoom будут применены некорректно визуально, несмотря на
корректную инициализацию объекта.
При использовании нестандартных систем координат:
crs: L.CRS.EPSG4326
изменяется:
zoomcentermaxBoundsЭто требует согласованности всех геопространственных данных слоя.
Некоторые контролы создаются автоматически:
Их можно не только отключить, но и заменить собственными реализациями через последующее добавление контролов.
center и zoom задают начальное состояние
камерыminZoom, maxBounds) формируют
рамки поведения