Объект config является центральным элементом
конфигурации в Kepler.gl. Он определяет внешний вид карты, набор слоёв,
настройки визуализации, фильтры, взаимодействие пользователя с картой,
параметры анимации и многие другие аспекты отображения данных.
Конфигурация используется для:
В большинстве случаев конфигурация экспортируется через интерфейс Kepler.gl и представляет собой большой JSON-объект.
Типичная структура выглядит следующим образом:
const config = {
version: "v1",
config: {
visState: {},
mapState: {},
mapStyle: {}
}
};
Каждый из разделов отвечает за отдельную часть состояния карты.
Полный объект содержит несколько крупных блоков:
{
version: "v1",
config: {
visState: {},
mapState: {},
mapStyle: {}
}
}
Описание разделов:
| Раздел | Назначение |
|---|---|
version |
Версия формата конфигурации |
visState |
Визуализация данных |
mapState |
Состояние карты |
mapStyle |
Стиль подложки карты |
Фактически вся визуальная логика находится внутри объекта
config.
Поле определяет версию схемы конфигурации.
Пример:
{
version: "v1"
}
Kepler.gl использует это значение для корректной интерпретации структуры объекта.
При обновлении библиотеки формат конфигурации может изменяться, поэтому версия позволяет выполнять миграцию старых настроек.
visState содержит информацию обо всех объектах
визуализации.
Типичная структура:
{
visState: {
filters: [],
layers: [],
interactionConfig: {},
layerBlending: "normal",
splitMaps: [],
animationConfig: {}
}
}
Это самый объёмный раздел конфигурации.
Содержит все фильтры, применённые к данным.
Пример:
filters: [
{
dataId: "earthquakes",
id: "date-filter",
name: ["date"],
type: "timeRange",
value: [
1577836800000,
1609459200000
]
}
]
Основные свойства фильтра:
| Поле | Назначение |
|---|---|
dataId |
Источник данных |
id |
Уникальный идентификатор |
name |
Поле датасета |
type |
Тип фильтра |
value |
Значение фильтра |
Наиболее распространённые варианты:
type: "range"
Числовой диапазон.
type: "timeRange"
Временной диапазон.
type: "multiSelect"
Множественный выбор значений.
type: "select"
Одиночный выбор.
Содержит описание всех слоёв карты.
Пример:
layers: [
{
id: "points-layer",
type: "point",
config: {},
visualChannels: {}
}
]
Каждый слой включает две основные части:
configvisualChannelsМинимальный пример:
{
id: "layer-1",
type: "point",
config: {},
visualChannels: {}
}
Уникальный идентификатор слоя.
id: "cities-layer"
Используется для внутренних ссылок между компонентами системы.
Определяет тип визуализации.
Примеры:
type: "point"
type: "arc"
type: "line"
type: "grid"
type: "hexagon"
type: "heatmap"
type: "geojson"
type: "trip"
Внутри объекта config находятся настройки конкретного
слоя.
Пример:
config: {
dataId: "cities",
label: "Cities",
color: [18, 147, 154],
columns: {},
isVisible: true,
visConfig: {}
}
Связь слоя с набором данных.
dataId: "cities"
Значение должно совпадать с идентификатором загруженного датасета.
Отображаемое имя слоя.
label: "Major Cities"
Показывается в панели слоёв.
Базовый цвет слоя.
color: [255, 0, 0]
Формат RGB:
[R, G, B]
Например:
[34, 63, 154]
Управляет отображением слоя.
isVisible: true
или
isVisible: false
Определяет соответствие колонок данным слоя.
Для точек:
columns: {
lat: "latitude",
lng: "longitude"
}
Для дуг:
columns: {
lat0: "origin_lat",
lng0: "origin_lng",
lat1: "dest_lat",
lng1: "dest_lng"
}
Для линий:
columns: {
geojson: "_geojson"
}
Содержит параметры визуального отображения.
Пример:
visConfig: {
radius: 20,
opacity: 0.8,
filled: true,
stroked: false
}
Содержимое зависит от типа слоя.
Размер точек.
radius: 10
Чем больше значение, тем крупнее маркеры.
Прозрачность.
opacity: 0.7
Диапазон:
0 — полностью прозрачный
1 — полностью непрозрачный
Заполнение фигур.
filled: true
Отрисовка контура.
stroked: true
Толщина линий.
thickness: 2
Используется для линейных слоёв.
Цветовая палитра.
colorRange: {
name: "Global Warming",
type: "sequential",
colors: [
"#5A1846",
"#900C3F",
"#C70039",
"#E3611C"
]
}
Используется тепловыми картами, сетками и агрегированными слоями.
Позволяет связывать визуальные свойства с полями данных.
Пример:
visualChannels: {
colorField: {
name: "population",
type: "integer"
}
}
Поле для окраски объектов.
colorField: {
name: "category",
type: "string"
}
Тип цветовой шкалы.
colorScale: "quantile"
Возможные значения:
"quantile"
"quantize"
"ordinal"
Поле для изменения размеров объектов.
sizeField: {
name: "population",
type: "integer"
}
Способ масштабирования.
sizeScale: "sqrt"
Другие варианты:
"linear"
"log"
"point"
Настройки взаимодействия пользователя с картой.
Пример:
interactionConfig: {
tooltip: {},
brush: {},
geocoder: {},
coordinate: {}
}
Управляет всплывающими подсказками.
Пример:
tooltip: {
enabled: true,
fieldsToShow: {
cities: [
{
name: "name"
},
{
name: "population"
}
]
}
}
Включение подсказок.
enabled: true
Поля для отображения.
fieldsToShow: {
dataset: [
{ name: "city" },
{ name: "country" }
]
}
Инструмент пространственного выделения.
brush: {
enabled: true,
size: 0.5
}
Строка поиска адресов.
geocoder: {
enabled: true
}
Показ координат курсора.
coordinate: {
enabled: true
}
Режим смешивания слоёв.
Пример:
layerBlending: "additive"
Варианты:
"normal"
"additive"
"subtractive"
Используется для синхронного сравнения нескольких карт.
Пример:
splitMaps: []
При разделённом режиме может содержать несколько представлений карты.
Настройки временной анимации.
Пример:
animationConfig: {
currentTime: null,
speed: 1
}
Текущая позиция временной шкалы.
currentTime: 1650000000000
Скорость воспроизведения.
speed: 2
Содержит состояние камеры карты.
Пример:
mapState: {
bearing: 0,
dragRotate: false,
latitude: 55.7558,
longitude: 37.6176,
pitch: 0,
zoom: 8
}
Широта центра карты.
latitude: 40.7128
Долгота центра карты.
longitude: -74.0060
Масштаб.
zoom: 10
Чем больше значение, тем сильнее приближение.
Наклон камеры.
pitch: 45
Позволяет получить псевдо-3D представление.
Поворот карты.
bearing: 90
Измеряется в градусах.
Разрешение вращения карты.
dragRotate: true
Флаг режима разделения карты.
isSplit: false
Определяет визуальный стиль подложки.
Пример:
mapStyle: {
styleType: "dark",
visibleLayerGroups: {},
topLayerGroups: {},
threeDBuildingColor: [9, 17, 31]
}
Базовый стиль карты.
Примеры:
styleType: "dark"
styleType: "light"
styleType: "satellite"
Управление видимостью слоёв подложки.
Пример:
visibleLayerGroups: {
label: true,
road: true,
border: false,
building: true,
water: true,
land: true
}
Каждая группа может быть отдельно включена или отключена.
Слои, отображаемые поверх остальных.
Пример:
topLayerGroups: {
label: true
}
Чаще всего используется для подписей населённых пунктов и дорог.
Цвет трёхмерных зданий.
threeDBuildingColor: [
218,
112,
191
]
Пользовательские стили карты
Kepler.gl позволяет подключать собственные стили Mapbox.
Пример:
mapStyles: {
customStyle: {
id: "custom-style",
label: "Corporate Style",
url: "mapbox://styles/company/style-id"
}
}
Такой подход позволяет использовать корпоративное оформление или специализированные картографические схемы.
const config = {
version: "v1",
config: {
visState: {
filters: [],
layers: [
{
id: "cities",
type: "point",
config: {
dataId: "cities",
label: "Cities",
color: [18, 147, 154],
columns: {
lat: "latitude",
lng: "longitude"
},
isVisible: true,
visConfig: {
radius: 20,
opacity: 0.8,
filled: true
}
},
visualChannels: {
colorField: null,
sizeField: null
}
}
],
interactionConfig: {
tooltip: {
enabled: true
}
},
layerBlending: "normal",
splitMaps: [],
animationConfig: {
speed: 1
}
},
mapState: {
latitude: 55.7558,
longitude: 37.6176,
zoom: 8,
bearing: 0,
pitch: 0
},
mapStyle: {
styleType: "dark",
visibleLayerGroups: {
label: true,
road: true,
water: true
}
}
}
};
Данный объект полностью описывает состояние визуализации: источник
данных, настройки слоёв, параметры отображения, текущее положение камеры
и внешний вид картографической подложки. Благодаря этому
config выступает универсальным механизмом сериализации и
восстановления проектов Kepler.gl, позволяя хранить всю конфигурацию
карты в одном JSON-документе.