Для работы с Kepler.gl требуется современная JavaScript-среда с поддержкой ES6+ и сборки модулей. Основой выступает среда выполнения Node.js, обеспечивающая управление зависимостями и запуск инструментов сборки.
Минимально необходимая конфигурация:
Визуализация в 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 хранит слои, фильтры и данные в глобальном сторе.
Kepler.gl использует карты Mapbox как базовый слой визуализации. Для этого требуется токен доступа:
Пример подключения:
const MAPBOX_TOKEN = "your_mapbox_token_here";
Токен применяется при инициализации компонента карты и передается в конфигурацию Kepler.gl.
После установки зависимостей создается основная структура:
src/
├── store.js
├── App.jsx
├── keplerConfig.js
└── main.jsx
Главная идея архитектуры заключается в разделении:
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 к состоянию приложения.
Основной визуальный элемент подключается следующим образом:
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 реализует архитектуру, в которой визуализация полностью зависит от централизованного состояния. Любые изменения данных, слоев или фильтров проходят через Redux actions, что обеспечивает предсказуемость состояния карты.
Компонент KeplerGl является «тонким» UI-слоем, не содержащим бизнес-логики, что упрощает масштабирование геоаналитических приложений.