Параметры тайловых слоёв в Leaflet определяют поведение загрузки,
отображения и управления растровыми картами, которые формируются из
набора тайлов (квадратных изображений фиксированного размера). Тайловый
слой создаётся через L.tileLayer, где URL-шаблон и набор
опций задают всю логику работы с источником данных.
Основой тайлового слоя является строка-шаблон, описывающая структуру адресов тайлов:
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png')
В шаблоне используются параметры подстановки:
{s} — поддомен (например, a, b, c) для балансировки
нагрузки{z} — уровень масштаба (zoom){x} — координата тайла по оси X{y} — координата тайла по оси YФормат {z}/{x}/{y} соответствует схеме XYZ, используемой
большинством современных тайловых серверов.
Дополнительно возможно использование нестандартных шаблонов, включая запросы к динамическим API или локальным серверным решениям.
Опции передаются вторым аргументом в
L.tileLayer(url, options) и формируют базовую конфигурацию
слоя.
L.tileLayer(url, {
minZoom: 0,
maxZoom: 19
})
minZoom — минимальный доступный масштабmaxZoom — максимальный доступный масштабЭти параметры ограничивают диапазон запросов тайлов и управляют логикой отображения слоя.
subdomains: 'abc'
или
subdomains: ['a', 'b', 'c']
Используется для распределения запросов между несколькими поддоменами. Это увеличивает параллелизм загрузки тайлов, снижая нагрузку на один сервер.
tileSize: 256
Размер тайла в пикселях. Стандартное значение — 256×256.
Допустимо также:
tileSize: L.point(512, 512)
Увеличение размера тайла уменьшает количество запросов, но увеличивает нагрузку на декодирование изображений.
opacity: 0.7
Управляет прозрачностью слоя. Используется при наложении нескольких картографических слоёв.
updateWhenIdle: true
Если включено, загрузка тайлов происходит только после завершения движения карты (pan/zoom). Это снижает нагрузку на сеть, но увеличивает задержку отображения.
Если отключено — тайлы подгружаются во время движения, создавая более «плавный» опыт.
updateWhenZooming: false
Контролирует обновление тайлов в процессе масштабирования. При
true тайлы обновляются в реальном времени, что может быть
полезно для плавных анимаций.
keepBuffer: 2
Определяет количество дополнительных «слоёв тайлов» вокруг видимой области, которые сохраняются в памяти.
maxNativeZoom: 18
Позволяет использовать тайлы более низкого разрешения при превышении максимального уровня зума.
Например, если сервер поддерживает только до 18 уровня, а пользователь увеличивает до 20, Leaflet масштабирует тайлы, не запрашивая новые изображения.
zoomOffset: 0
Сдвигает уровень зума при запросе тайлов.
Применяется при несоответствии системы координат источника данных и Leaflet.
zoomReverse: false
Инвертирует ось масштабирования. Используется в редких случаях, когда тайловая система построена в обратном порядке.
detectRetina: true
Автоматически подставляет более высокое разрешение тайлов на устройствах с высокой плотностью пикселей (Retina/HiDPI).
При включении Leaflet может запрашивать тайлы с увеличенным масштабом и затем уменьшать их визуально.
errorTileUrl: '/images/tile-error.png'
Задаёт изображение, которое отображается вместо тайла при ошибке загрузки.
Используется для:
crossOrigin: true
или
crossOrigin: 'anonymous'
Включает CORS-загрузку тайлов. Необходим для:
bounds: L.latLngBounds(
L.latLng(40, -10),
L.latLng(60, 30)
)
Ограничивает область, в пределах которой запрашиваются тайлы.
Используется для:
При выходе карты за пределы заданных границ тайлы не загружаются.
tms: true
Переключает схему координат Y для тайловой системы.
Различия:
Включение tms необходимо при работе с устаревшими
картографическими серверами.
Хотя не является прямой опцией конструктора, поведение обновления тайлов связано с внутренними интервалами перерасчёта видимой области.
В связке с keepBuffer формируется стратегия:
attribution: '© OpenStreetMap contributors'
Отображает текст атрибуции источника данных.
Используется для соблюдения лицензий картографических сервисов.
pane: 'tilePane'
Определяет слой рендеринга в DOM. Позволяет управлять порядком отображения различных типов слоёв.
При изменении масштаба Leaflet выполняет последовательность операций:
minZoom, maxZoom,
boundssubdomains для балансировкиkeepBufferКомбинация параметров определяет баланс между качеством изображения и производительностью:
tileSize влияет на количество запросовkeepBuffer влияет на плавность перемещенияupdateWhenIdle снижает нагрузку на сетьdetectRetina повышает детализацию на высоких DPImaxNativeZoom предотвращает лишние загрузкиОптимальные значения зависят от типа карты: аналитические, навигационные или декоративные слои требуют разных настроек.
Тайлы, загруженные через L.tileLayer, кэшируются
браузером на основе HTTP-заголовков сервера. При корректной настройке
сервера:
Использование стабильных URL без случайных параметров позволяет эффективно применять кэширование.
Комбинированные конфигурации позволяют адаптировать слой под конкретный сценарий:
maxZoom, включение
detectRetinatileSize, отключение
updateWhenZoomingmaxNativeZoom и
subdomainsbounds и локальные
URL-шаблоны