Растровые данные в Mapbox GL JS используются для отображения готовых изображений карты, тайлов спутниковых снимков, ортофотопланов, исторических карт и любых других слоёв, где геометрия уже «запечена» в пиксели. В отличие от векторных данных, где стилизация происходит на стороне клиента, растровый слой представляет собой набор изображений, которые браузер лишь масштабирует, позиционирует и комбинирует.
Растровая модель в Mapbox GL JS строится на принципе тайловой сетки. Карта делится на квадратные тайлы фиксированного размера (обычно 256×256 пикселей), которые подгружаются по мере необходимости в зависимости от текущего масштаба и области просмотра.
Основные характеристики:
В отличие от векторных слоёв, где Mapbox GL JS строит сцену из геометрических примитивов, растровый слой фактически является «текстурированной плоскостью» в координатах карты.
Растровые данные подключаются через источник типа
raster.
map.addSource('satellite-source', {
type: 'raster',
tiles: [
'https://example.com/tiles/{z}/{x}/{y}.png'
],
tileSize: 256
});
type: “raster” Определяет тип источника как растровый.
tiles Массив URL-шаблонов тайлов. Поддерживаются переменные:
{z} — уровень масштаба{x} — координата по оси X{y} — координата по оси YtileSize Размер тайла в пикселях. Чаще всего:
bounds (опционально) Ограничивает область отображения источника:
bounds: [-180, -85, 180, 85]
minzoom / maxzoom Контроль диапазона масштабов:
minzoom: 0,
maxzoom: 18
После добавления источника создаётся слой типа
raster.
map.addLayer({
id: 'satellite-layer',
type: 'raster',
source: 'satellite-source',
paint: {
'raster-opacity': 1
}
});
Управляет прозрачностью слоя:
'raster-opacity': 0.7
Позволяет накладывать растровые данные на другие слои, создавая комбинированные визуализации.
Изменяет оттенок изображения:
'raster-hue-rotate': 90
Используется для стилизации спутниковых снимков или визуального различения слоёв.
Регулировка яркости:
'raster-brightness-min': 0.2,
'raster-brightness-max': 0.9
Позволяет «вытягивать» детали из тёмных или пересвеченных изображений.
Контроль насыщенности цвета:
'raster-saturation': 0.5
Значение ниже 0 делает изображение ближе к чёрно-белому.
Контрастность изображения:
'raster-contrast': 0.8
Используется для повышения читаемости спутниковых данных.
Наиболее распространённый тип. Используется для:
Пример:
map.addSource('terrain', {
type: 'raster',
tiles: [
'https://tiles.provider.com/terrain/{z}/{x}/{y}.jpg'
],
tileSize: 256
});
Хотя DEM формально относится к отдельному типу источников
(raster-dem), он часто рассматривается вместе с растровыми
данными из-за схожей природы.
Используется для:
Mapbox GL JS использует Web Mercator проекцию. Это означает:
Количество тайлов на уровне z:
tiles = 2^z × 2^z
На практике:
Растровые данные на высоких зумах становятся очень объёмными, поэтому важны:
Растровый слой не пересчитывает геометрию, а масштабирует пиксели:
Контроль качества:
map.setPaintProperty('satellite-layer', 'raster-resampling', 'linear');
Варианты:
linear — плавное сглаживаниеnearest — резкое пиксельное отображениеРастровые слои менее требовательны к CPU, но чувствительны к:
Ключевые механизмы оптимизации:
maxzoom: 14
Снижает количество высокодетализированных тайлов.
tileSize: 512
Уменьшает количество запросов к серверу.
Mapbox GL JS автоматически загружает тайлы вокруг viewport, но поведение можно контролировать через параметры карты:
map = new mapboxgl.Map({
preload: 1
});
Растровые слои часто используются совместно с векторными:
Пример:
map.addLayer({
id: 'roads',
type: 'line',
source: 'vector-source',
'source-layer': 'roads'
});
map.addLayer({
id: 'satellite',
type: 'raster',
source: 'satellite-source'
});
Порядок добавления определяет визуальную иерархию.
Растровые слои часто используются как фон, поэтому прозрачность играет ключевую роль:
'raster-opacity': 0.6
Комбинирование с векторными слоями позволяет создавать гибридные карты.
Дополнительно применяется:
Источник можно менять без пересоздания слоя:
map.getSource('satellite-source').setTiles([
'https://new-server.com/{z}/{x}/{y}.png'
]);
Это используется для:
Браузер и Mapbox GL JS используют многоуровневое кэширование:
Эффект:
Растровая модель имеет фундаментальные ограничения:
Поэтому растровые слои редко используются как единственный источник данных в интерактивных приложениях.
Типичные архитектуры:
map.setLayoutProperty('satellite-layer', 'visibility', 'none');
Возможные значения:
visiblenoneИспользуется для:
Растровые источники поддерживают стандартные события карты:
map.on('load', () => {
console.log('map loaded');
});
map.on('idle', () => {
console.log('all tiles loaded');
});
Дополнительно можно отслеживать состояние источника:
map.isSourceLoaded('satellite-source');
Если тайл недоступен:
Настройки сервера критичны для стабильности отображения.