Kepler.gl построен как React-компонент с сильной зависимостью от входных параметров, через которые задаётся как поведение карты, так и структура данных, визуализация и взаимодействие с состоянием приложения. Пропсы здесь выполняют роль единого интерфейса управления всеми слоями системы: от подключения Mapbox до синхронизации состояния с внешним хранилищем.
Компонент KeplerGl принимает минимальный набор
обязательных параметров, без которых отрисовка карты невозможна.
mapboxApiAccessToken Ключевой пропс, обеспечивающий доступ к Mapbox. Без него невозможно загрузить базовые тайлы и стили карты.
id Уникальный идентификатор инстанса Kepler.gl. Используется для изоляции нескольких карт в одном приложении и для привязки состояния в Redux-структуре Kepler.gl.
width / height Размеры контейнера карты. Поддерживается как фиксированная числовая величина, так и динамическое управление через внешние измерения контейнера. Эти пропсы напрямую влияют на рендер WebGL-сцены Deck.gl.
Kepler.gl работает с данными через структурированные датасеты, которые описывают таблицы, поля и географические координаты.
Пропс data — один из центральных в архитектуре
Kepler.gl. Он принимает массив или объект датасетов, каждый из которых
содержит:
fields — описание колонок (тип, имя, формат)rows — массив значенийname — имя набора данныхВнутри Kepler.gl данные преобразуются в внутренний формат visState, где формируются слои, фильтры и агрегаты.
Альтернативный способ передачи данных. Используется, когда требуется загрузка нескольких источников одновременно с явной структурой:
info — метаданные (название, описание)data — сами строки и поляversion — версия схемыИспользование datasets предпочтительно при интеграции с
серверной загрузкой или динамическим импортом CSV/JSON.
Kepler.gl разделяет состояние на несколько логических частей:
mapState, visState, mapStyle,
uiState. Эти пропсы позволяют сделать компонент
контролируемым.
Отвечает за положение камеры и параметры отображения карты:
Передача mapState позволяет полностью управлять
положением карты извне, превращая Kepler.gl в controlled-компонент.
Один из самых сложных объектов состояния. Содержит:
При внешнем управлении visState разработчик получает
полный контроль над логикой визуализации, включая порядок слоёв и их
стили.
Определяет визуальный стиль карты:
Kepler.gl использует этот пропс для интеграции с Mapbox Style Specification.
Отвечает за интерфейсные элементы:
Этот пропс часто используется для кастомизации интерфейса без изменения логики данных.
Kepler.gl предоставляет набор callback-функций для синхронизации состояния с внешним приложением.
Вызывается при полной инициализации Kepler.gl. Используется для:
Основной callback для отслеживания изменений состояния. Срабатывает при любом изменении:
Позволяет реализовать внешний store или сохранять состояние в backend.
Специализированный callback для изменения положения камеры карты. Используется для:
Kepler.gl может работать в двух режимах:
Состояние полностью управляется внутри библиотеки. Пропсы используются только для инициализации.
Особенности:
Все ключевые состояния передаются через пропсы:
Особенности:
Kepler.gl изначально проектировался с глубокой интеграцией Redux, поэтому многие пропсы тесно связаны с состоянием store.
Функция, позволяющая Kepler.gl получать состояние из внешнего хранилища. Используется при кастомной интеграции Redux, когда структура store отличается от стандартной.
Хотя напрямую не всегда передаются как пропсы, действия Kepler.gl зависят от внешнего dispatch, который управляет:
Используется для ограничения частоты обновления состояния. Особенно важно при:
Задаёт задержку для группировки обновлений состояния, снижая нагрузку на React и WebGL.
Имя приложения, отображаемое в интерфейсе Kepler.gl. Используется также в логировании и сохранении пресетов.
Позволяет учитывать совместимость состояния между разными версиями Kepler.gl, особенно при загрузке сохранённых конфигураций.
Kepler.gl активно использует сериализуемые структуры. Это накладывает ограничения:
При нарушении этих условий возможны ошибки гидратации состояния или некорректный рендер слоёв.
Каждый ключевой пропс имеет прямое отображение во внутренней Redux-модели:
Изменение пропсов инициирует соответствующие actions, что делает Kepler.gl гибридом controlled/uncontrolled архитектуры.
Типичная архитектура интеграции включает:
Такой подход позволяет строить аналитические панели, гео-дашборды и интерактивные системы визуализации с синхронизированными представлениями данных.