Библиотека Kepler.gl использует картографический движок Mapbox GL для отображения базовой карты. Визуальные характеристики этой карты определяются специальным стилем (Map Style), который задаёт внешний вид дорог, зданий, водоёмов, подписей, границ, парков, рельефа и других элементов подложки.
Стиль карты влияет не только на эстетику проекта, но и на читаемость аналитических данных. Правильно подобранный фон помогает акцентировать внимание на слоях визуализации, уменьшает визуальный шум и повышает информативность карты.
В Kepler.gl стили могут:
Mapbox-стиль представляет собой JSON-документ, описывающий:
Упрощённая структура выглядит следующим образом:
{
"version": 8,
"sources": {},
"layers": []
}
Kepler.gl не редактирует содержимое стиля напрямую. Вместо этого библиотека загружает готовый стиль и использует его как базовую карту.
Схема взаимодействия выглядит так:
Kepler.gl
|
v
Mapbox Style JSON
|
v
Mapbox GL Renderer
|
v
Отображение карты
По умолчанию Kepler.gl предоставляет несколько встроенных вариантов оформления.
Наиболее распространённые:
| Стиль | Назначение |
|---|---|
| Dark | Тёмная аналитическая карта |
| Light | Светлая нейтральная карта |
| Muted | Приглушённая цветовая схема |
| Night | Ночной вариант оформления |
| Satellite | Спутниковые снимки |
| Satellite Streets | Спутниковая карта с подписями улиц |
Переключение происходит через интерфейс пользователя в разделе настроек карты.
Каждый стиль имеет собственный набор цветов и уровней детализации.
Например:
Большинство стилей Mapbox требуют наличия токена доступа.
Токен передаётся через параметр:
import KeplerGl from 'kepler.gl';
<KeplerGl
id="map"
mapboxApiAccessToken={MAPBOX_TOKEN}
/>
Пример:
const MAPBOX_TOKEN =
'pk.eyJ1IjoiZXhhbXBsZSIsImEiOiJhYmNkZWYifQ';
Без валидного токена загрузка большинства картографических стилей невозможна.
Внутреннее состояние Kepler.gl хранит информацию о выбранном стиле.
Пример конфигурации:
const config = {
version: 'v1',
config: {
mapStyle: {
styleType: 'dark'
}
}
};
Значение поля:
styleType
определяет активную тему оформления.
Другие варианты:
styleType: 'light'
styleType: 'muted'
styleType: 'satellite'
После загрузки конфигурации карта автоматически применит указанный стиль.
Раздел mapStyle является центральным элементом настройки
внешнего вида базовой карты.
Пример:
mapStyle: {
styleType: 'dark',
visibleLayerGroups: {
label: true,
road: true,
border: false,
building: true,
water: true,
land: true,
'3d building': false
}
}
Здесь одновременно задаются:
Kepler.gl позволяет скрывать отдельные категории объектов без создания собственного стиля.
Основные группы:
| Группа | Содержимое |
|---|---|
| label | Подписи |
| road | Дороги |
| building | Здания |
| border | Границы |
| water | Водоёмы |
| land | Земля |
| 3d building | Трёхмерные здания |
Пример отключения дорог:
mapStyle: {
visibleLayerGroups: {
road: false
}
}
Пример скрытия подписей:
mapStyle: {
visibleLayerGroups: {
label: false
}
}
Подобная настройка особенно полезна при отображении больших наборов точек, когда подписи начинают мешать анализу.
Kepler.gl поддерживает подключение собственных Mapbox-стилей.
Сначала создаётся стиль в Mapbox Studio.
После публикации получается адрес вида:
mapbox://styles/username/styleid
Далее стиль регистрируется в приложении.
Пример:
const customStyle = {
id: 'corporate-dark',
label: 'Corporate Dark',
url: 'mapbox://styles/company/abcd1234',
icon: ''
};
После регистрации стиль становится доступным в интерфейсе Kepler.gl.
Такой подход используется для:
Описание пользовательского стиля обычно содержит следующие поля:
{
id: 'custom-style',
label: 'Custom Style',
url: 'mapbox://styles/user/styleid',
icon: ''
}
Где:
Уникальный идентификатор.
id: 'custom-style'
Название для отображения пользователю.
label: 'Corporate Map'
Адрес Mapbox-стиля.
url: 'mapbox://styles/user/styleid'
Иконка предпросмотра.
icon: ''
Обычно содержит URL изображения.
Поскольку Kepler.gl построен поверх Redux, новые стили можно регистрировать программно.
Пример:
import {addCustomMapStyle} from 'kepler.gl/actions';
dispatch(
addCustomMapStyle({
id: 'custom-dark',
label: 'Custom Dark',
url: 'mapbox://styles/user/123456'
})
);
После выполнения действия новый стиль появится среди доступных вариантов.
Спутниковые карты являются отдельной категорией стилей.
Обычно используются для:
Пример конфигурации:
mapStyle: {
styleType: 'satellite'
}
Особенности спутниковых карт:
Гибридный режим объединяет спутниковые изображения и векторные подписи.
Пример:
styleType: 'satellite-streets'
Такой вариант позволяет одновременно видеть:
Гибридные стили особенно востребованы в логистике и транспортной аналитике.
Некоторые стили содержат слой объёмных зданий.
Управление осуществляется через группу:
'3d building'
Пример включения:
mapStyle: {
visibleLayerGroups: {
'3d building': true
}
}
Пример отключения:
mapStyle: {
visibleLayerGroups: {
'3d building': false
}
}
Трёхмерное отображение помогает при анализе городской среды и плотной застройки.
Выбор фона напрямую влияет на восприятие аналитических слоёв.
Для тёмных карт обычно используют:
Яркие цвета
Высокую прозрачность
Неоновые оттенки
Для светлых карт:
Насыщенные тёмные цвета
Контрастные линии
Тёмные подписи
Для спутниковых карт:
Толстые контуры
Крупные маркеры
Высокую непрозрачность
Неправильное сочетание может привести к потере читаемости данных.
При экспорте конфигурации информация о стиле сохраняется автоматически.
Фрагмент конфигурации:
{
"mapStyle": {
"styleType": "dark",
"visibleLayerGroups": {
"road": true,
"building": true,
"water": true
}
}
}
При повторной загрузке проекта стиль восстанавливается без дополнительной настройки.
Разные стили оказывают различную нагрузку на систему.
Наиболее лёгкие:
Средняя нагрузка:
Наиболее тяжёлые:
Причины:
При работе с миллионами объектов обычно предпочтительнее использовать минималистичные стили без лишних декоративных элементов.
Оптимальные варианты:
Dark
Muted
Причины:
Оптимальные варианты:
Light
Satellite Streets
Причины:
Оптимальные варианты:
Light
3D Building
Причины:
Оптимальные варианты:
Satellite
Satellite Streets
Причины:
Оптимальные варианты:
Custom Mapbox Styles
Причины:
При создании собственных Mapbox-стилей для Kepler.gl обычно придерживаются следующих принципов:
Грамотно спроектированный Mapbox-стиль превращает базовую карту из фонового изображения в полноценный инструмент визуальной аналитики, повышающий читаемость данных и эффективность работы с пространственной информацией в Kepler.gl.