В MapLibre GL JS основой визуализации карты выступают тайлы — небольшие фрагменты геоданных или изображений, которые загружаются по мере необходимости в зависимости от положения камеры и масштаба. Выбор источника тайлов напрямую определяет производительность, качество отображения и гибкость стилизации карты.
MapLibre GL JS поддерживает несколько типов источников данных, каждый из которых ориентирован на разные сценарии: векторные тайлы, растровые изображения, GeoJSON, DEM-данные и мультимедийные источники.
Векторные тайлы являются наиболее гибким и производительным вариантом для интерактивных карт.
Ключевые особенности:
Типичный источник в стиле MapLibre:
map.addSource('streets', {
type: 'vector',
tiles: [
'https://example.com/tiles/{z}/{x}/{y}.pbf'
],
minzoom: 0,
maxzoom: 14
});
Формат .pbf (Protocolbuffer Binary Format) обеспечивает
компактность и высокую скорость загрузки. Векторные источники часто
используются с данными OpenStreetMap и генерацией через TileServer или
OpenMapTiles.
Растровые тайлы представляют собой готовые изображения, разделённые на сетку.
Особенности:
Пример:
map.addSource('satellite', {
type: 'raster',
tiles: [
'https://example.com/satellite/{z}/{x}/{y}.png'
],
tileSize: 256
});
Растровые источники применяются для спутниковых снимков, ортофотопланов и исторических карт.
Источники цифровых моделей рельефа используются для построения 3D-эффектов и анализа высот.
Особенности:
Пример:
map.addSource('terrain', {
type: 'raster-dem',
tiles: [
'https://example.com/dem/{z}/{x}/{y}.png'
],
encoding: 'mapbox'
});
GeoJSON используется для динамических или пользовательских данных.
Особенности:
Пример:
map.addSource('points', {
type: 'geojson',
data: {
type: 'FeatureCollection',
features: [
{
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [66.9237, 48.0196]
}
}
]
}
});
GeoJSON подходит для отображения объектов реального времени, пользовательских маркеров и аналитических слоёв.
Большинство тайловых источников используют шаблон:
/{z}/{x}/{y}
где:
Поддерживаются схемы:
TileJSON используется для централизованного описания тайлового набора:
map.addSource('tileset', {
type: 'vector',
url: 'https://example.com/tiles.json'
});
Файл TileJSON может содержать:
Векторные тайлы:
Растровые тайлы:
Векторные источники позволяют:
Растровые источники ограничены пиксельным уровнем редактирования.
При высоких масштабах и сложной геометрии векторные тайлы оказываются значительно эффективнее за счёт сжатия геометрии и передачи только нужных сегментов.
Каждый источник тайлов имеет параметры:
Неправильная настройка приводит к:
Тайлы эффективно кешируются на нескольких уровнях:
Использование CDN критично для глобальных карт, поскольку тайлы загружаются фрагментами и могут поступать с разных географических точек.
Источники тайлов часто связаны с правовыми ограничениями.
Типичные варианты:
Игнорирование атрибуции может привести к блокировке сервиса или нарушению условий использования.
При self-hosting используются:
Преимущества:
Недостатки:
MapLibre требует указания источников данных через параметр:
attribution: '© OpenStreetMap contributors'
Атрибуция может быть частью стиля или отдельного слоя UI и обязана сохранять корректные ссылки на поставщиков данных.
Один стиль может содержать несколько источников одновременно:
Комбинация источников позволяет строить многослойные карты с различными уровнями детализации и функциональности.