Raster-источник в MapLibre GL JS представляет собой тип источника данных, в котором карта формируется из готовых растровых изображений, разбитых на тайлы. В отличие от векторных источников, где данные содержат геометрию и стилизацию происходит на стороне клиента, raster-источник поставляет уже отрендеренные изображения, обычно в формате PNG или JPEG.
Raster-данные применяются для подложек карты (tiles basemap), спутниковых снимков, растровых слоёв с высокой детализацией и любых сценариев, где геометрическая интерпретация на клиенте не требуется.
Raster-источник описывается через объект source в
конфигурации стиля карты. Основной тип — raster, который
использует шаблон URL для загрузки тайлов.
Ключевые параметры:
"raster"map.addSource('raster-source', {
type: 'raster',
tiles: [
'https://tiles.example.com/raster/{z}/{x}/{y}.png'
],
tileSize: 256,
minzoom: 0,
maxzoom: 19,
attribution: '© Example Tiles Provider'
});
В этом примере используется стандартная схема XYZ, где:
{z} — уровень зума{x} — координата тайла по оси X{y} — координата тайла по оси YСам по себе источник не отображается на карте. Для визуализации
используется слой типа raster.
map.addLayer({
id: 'raster-layer',
type: 'raster',
source: 'raster-source',
paint: {
'raster-opacity': 0.85
}
});
Raster-источники поддерживают две основные схемы:
/{z}/{x}/{y}.png
Ось Y направлена сверху вниз. Используется в большинстве современных картографических сервисов.
map.addSource('raster-tms', {
type: 'raster',
tiles: [
'https://example.com/tiles/{z}/{x}/{y}.png'
],
scheme: 'tms',
tileSize: 256
});
В TMS схема ось Y инвертирована относительно XYZ.
Параметр tileSize критически влияет на визуальное
качество и производительность.
map.addSource('raster-hires', {
type: 'raster',
tiles: [
'https://example.com/tiles/{z}/{x}/{y}@2x.png'
],
tileSize: 512
});
Параметр bounds задаёт прямоугольную область, в пределах
которой источник активен.
map.addSource('raster-bounded', {
type: 'raster',
tiles: [
'https://example.com/tiles/{z}/{x}/{y}.png'
],
bounds: [ -180, -85.0511, 180, 85.0511 ]
});
Формат:
[west, south, east, north]
Raster-источники часто становятся узким местом из-за объёма изображений. Оптимизация включает несколько стратегий.
MapLibre автоматически кэширует тайлы в памяти и IndexedDB (в зависимости от окружения).
MapLibre может загружать тайлы более высокого зума заранее:
Raster-источники часто требуют обязательного указания правообладателя.
attribution: '© OpenStreetMap contributors, © Satellite Provider'
Атрибуция отображается в интерфейсе карты и должна соответствовать лицензии данных.
Raster-слои могут накладываться друг на друга:
map.addSource('satellite', {
type: 'raster',
tiles: ['https://sat.example.com/{z}/{x}/{y}.jpg'],
tileSize: 256
});
map.addSource('labels', {
type: 'raster',
tiles: ['https://labels.example.com/{z}/{x}/{y}.png'],
tileSize: 256
});
map.addLayer({
id: 'satellite-layer',
type: 'raster',
source: 'satellite'
});
map.addLayer({
id: 'labels-layer',
type: 'raster',
source: 'labels',
paint: {
'raster-opacity': 0.9
}
});
Такой подход используется для разделения базовой подложки и подписей.
Raster-слои не поддерживают фильтры по атрибутам, поскольку не
содержат векторных данных. Однако визуальная обработка выполняется через
paint свойства.
Примеры эффектов:
paint: {
'raster-brightness-min': 0.2,
'raster-brightness-max': 0.9,
'raster-saturation': -0.3,
'raster-contrast': 0.4
}
Эти параметры часто используются для:
Raster-источники зависят от доступных уровней zoom:
Raster-подход имеет ряд ограничений:
Эти ограничения компенсируются простотой рендеринга и высокой производительностью на клиенте.
Raster:
Vector:
Raster-источники чаще используются как базовый слой, а vector — для интерактивных объектов поверх него.
Raster-источники совместимы с любыми XYZ/TMS серверами:
Главное требование — соблюдение URL-шаблона и корректная схема координат.
MapLibre автоматически обрабатывает:
В таких случаях отображается пустой тайл или повтор запроса в зависимости от стратегии загрузчика.
Raster-слои рендерятся как текстуры WebGL:
Оптимизация достигается через: