Функция addDataToMap является ключевым механизмом
интеграции данных в Kepler.gl и служит центральной точкой взаимодействия
между приложением и визуализационным состоянием карты. Именно через неё
происходит добавление, обновление и связывание геопространственных
наборов данных с визуальными слоями, фильтрами и конфигурацией
карты.
Kepler.gl построен на архитектуре Redux-подобного состояния, где все
изменения карты происходят через диспатч экшенов.
addDataToMap представляет собой action creator, который
формирует структурированный объект действия для добавления данных.
Основная задача:
Базовая форма вызова выглядит следующим образом:
addDataToMap({
datasets: [...],
options: {
centerMap: true,
readOnly: false
},
config: {
mapState: {},
mapStyle: {}
}
});
Ключевые компоненты:
Каждый элемент массива datasets представляет собой
объект, содержащий данные и метаданные:
{
info: {
id: 'my_dataset',
label: 'Dataset Label'
},
data: {
fields: [...],
rows: [...]
}
}
Содержит метаданные:
id — уникальный идентификатор набора данныхlabel — отображаемое имя слоя данныхСодержит фактические данные:
Пример:
fields: [
{ name: 'lat', type: 'real' },
{ name: 'lng', type: 'real' }
],
rows: [
[55.75, 37.61],
[59.93, 30.31]
]
Объект options управляет поведением карты при добавлении
данных.
centerMap: true
При значении true карта автоматически центрируется и
масштабируется под загруженные данные. Это особенно важно при первом
добавлении данных, когда текущий viewport не задан.
readOnly: false
Определяет, можно ли пользователю изменять визуализацию после загрузки данных:
true — блокирует изменения слоёв и фильтровfalse — разрешает интерактивное редактированиеПараметр config позволяет задать начальное состояние
карты. Он используется для восстановления сохранённых сессий или
предустановленных визуализаций.
Отвечает за положение и масштаб карты:
mapState: {
latitude: 55.75,
longitude: 37.61,
zoom: 10
}
Основные свойства:
latitude — широта центра картыlongitude — долгота центра картыzoom — уровень масштабированияОпределяет визуальный стиль карты:
mapStyle: {
styleType: 'dark',
visibleLayerGroups: {
label: true,
road: true,
border: false
}
}
После вызова addDataToMap происходит последовательность
внутренних операций:
datasets в состоянии kepler.glПри добавлении данных Kepler.gl автоматически создаёт базовые слои в зависимости от структуры данных.
Типы автоматического определения:
lat/lngДобавление через addDataToMap может быть дополнено
пользовательской конфигурацией слоёв через
config.visState.layers.
Kepler.gl поддерживает одновременную загрузку нескольких datasets:
addDataToMap({
datasets: [
datasetA,
datasetB
]
});
Особенности:
Повторный вызов addDataToMap с тем же id
приводит к обновлению существующего набора данных.
Поведение:
centerMap: trueKepler.gl чувствителен к структуре данных. Для оптимальной производительности важно:
rowsОсобенно важно при больших наборах:
В Redux-архитектуре Kepler.gl addDataToMap диспатчится
следующим образом:
dispatch(addDataToMap({
datasets,
options
}));
После диспатча данные попадают в:
keplerGl.map.datasetskeplerGl.map.visStatekeplerGl.map.mapStatevisState является центральным узлом визуализации:
После вызова addDataToMap обновляются:
Каждый dataset становится источником для формирования визуальных объектов.
При некорректной структуре данных поведение Kepler.gl зависит от типа ошибки:
fields → dataset игнорируетсяrows → слой не создаётсяОшибки не всегда приводят к исключению, чаще происходит деградация визуализации.
addDataToMap({
datasets,
config: savedMapConfig
});
Используется для восстановления состояния приложения.
При потоковых данных (real-time):
addDataToMap с обновлённым datasetidПри наличии нескольких datasets возможно создание аналитических связей через:
Функция выступает точкой входа для всей геопространственной визуализации. Через неё:
Без addDataToMap Kepler.gl остаётся пустым визуальным
контейнером без источника данных.