Установка и настройка окружения

Для работы с Kepler.gl требуется современная JavaScript-среда с поддержкой ES6+ и сборки модулей. Основой выступает среда выполнения Node.js, обеспечивающая управление зависимостями и запуск инструментов сборки.

Минимально необходимая конфигурация:

  • Node.js версии 16 и выше
  • npm или yarn как менеджер пакетов
  • современный браузер с поддержкой WebGL
  • проект на основе React
  • доступ к API-ключу Mapbox (для рендеринга карт)

Визуализация в Kepler.gl опирается на WebGL, поэтому аппаратное ускорение графики в браузере является обязательным условием корректной работы.


Инициализация проекта

Базовая структура приложения формируется через React-сборку. Чаще всего используется Vite или Create React App, однако предпочтение отдается более легким инструментам вроде Vite.

Создание проекта:

npm create vite@latest kepler-project -- --template react
cd kepler-project
npm install

После инициализации формируется минимальная структура React-приложения, в которую далее интегрируется Kepler.gl.


Установка зависимостей

Основной пакет Kepler.gl устанавливается через npm:

npm install kepler.gl

Дополнительно требуется набор библиотек для интеграции с состоянием приложения:

npm install react-redux redux redux-thunk

Использование React обусловлено тем, что Kepler.gl реализован как React-компонент и тесно связан с компонентной моделью.

Для управления состоянием используется Redux, поскольку Kepler.gl хранит слои, фильтры и данные в глобальном сторе.


Настройка Mapbox

Kepler.gl использует карты Mapbox как базовый слой визуализации. Для этого требуется токен доступа:

  1. Создание аккаунта Mapbox
  2. Получение access token
  3. Передача токена в приложение через конфигурацию

Пример подключения:

const MAPBOX_TOKEN = "your_mapbox_token_here";

Токен применяется при инициализации компонента карты и передается в конфигурацию Kepler.gl.


Базовая структура приложения

После установки зависимостей создается основная структура:

src/
 ├── store.js
 ├── App.jsx
 ├── keplerConfig.js
 └── main.jsx

Главная идея архитектуры заключается в разделении:

  • Redux store — хранение состояния карты
  • React-компоненты — отображение интерфейса
  • конфигурационные файлы — настройка Kepler.gl

Настройка Redux-хранилища

Kepler.gl требует специфической интеграции с Redux через редюсер и middleware.

import { createStore, combineReducers, applyMiddleware } from "redux";
import thunk from "redux-thunk";
import keplerGlReducer from "kepler.gl/reducers";

const reducers = combineReducers({
  keplerGl: keplerGlReducer
});

const store = createStore(reducers, {}, applyMiddleware(thunk));

export default store;

Middleware redux-thunk используется для обработки асинхронных операций, включая загрузку геоданных и конфигураций карт.


Подключение провайдера состояния

Интеграция Redux с React-приложением выполняется через Provider:

import React from "react";
import ReactDOM from "react-dom/client";
import { Provider } from "react-redux";
import store from "./store";
import App from "./App";

ReactDOM.createRoot(document.getElementById("root")).render(
  <Provider store={store}>
    <App />
  </Provider>
);

Так формируется глобальный доступ Kepler.gl к состоянию приложения.


Интеграция KeplerGl-компонента

Основной визуальный элемент подключается следующим образом:

import KeplerGl from "kepler.gl";
import { useDispatch } from "react-redux";

const App = () => {
  const dispatch = useDispatch();

  return (
    <div style={{ height: "100vh" }}>
      <KeplerGl
        id="map"
        width={window.innerWidth}
        height={window.innerHeight}
        mapboxApiAccessToken={"your_mapbox_token_here"}
      />
    </div>
  );
};

export default App;

Компонент требует обязательного указания id, поскольку через него Kepler.gl связывается с Redux-стором.


Конфигурация сборки

При использовании Vite или Webpack необходимо учитывать особенности WebGL-зависимостей.

Для Vite конфигурация может включать:

export default {
  optimizeDeps: {
    include: ["kepler.gl"]
  }
};

Некоторые версии Kepler.gl требуют дополнительной полифил-интеграции для Buffer и process.


Работа со стилями

Kepler.gl использует собственные стили интерфейса, которые необходимо импортировать отдельно:

import "kepler.gl/dist/styles.css";

Отсутствие данного импорта приводит к некорректному отображению интерфейса слоев, панелей и фильтров.


Типовые проблемы окружения

Ошибка WebGL context lost Возникает при недостатке графических ресурсов или отключенном аппаратном ускорении.

Redux store not found Причина — отсутствие Provider или неправильная структура store.

Invalid Mapbox token Следствие неверного или неактивного ключа доступа.

Blank map rendering Связано с отсутствием CSS Kepler.gl или блокировкой WebGL в браузере.


Версионная совместимость

Стабильная работа достигается при согласовании версий:

  • kepler.gl — актуальная стабильная ветка
  • react — 17/18
  • redux — 4+
  • mapbox-gl — версия, совместимая с Kepler.gl сборкой

Несовместимость версий часто приводит к ошибкам рендеринга или падению сборки.


Архитектурные особенности интеграции

Kepler.gl реализует архитектуру, в которой визуализация полностью зависит от централизованного состояния. Любые изменения данных, слоев или фильтров проходят через Redux actions, что обеспечивает предсказуемость состояния карты.

Компонент KeplerGl является «тонким» UI-слоем, не содержащим бизнес-логики, что упрощает масштабирование геоаналитических приложений.