Библиотека MapLibre GL JS распространяется как npm-пакет и
подключается в современных JavaScript-проектах через стандартную систему
модулей. Основной пакет — maplibre-gl, содержащий ядро
рендеринга карт на WebGL, систему слоёв, источников данных и API
управления картой.
Установка выполняется через любой пакетный менеджер, совместимый с npm-экосистемой.
Через npm:
npm install maplibre-gl
Через yarn:
yarn add maplibre-gl
Через pnpm:
pnpm add maplibre-gl
После установки пакет становится доступен в
node_modules, а его модули могут быть импортированы в коде
приложения.
MapLibre GL JS требует явного подключения JavaScript-модуля и CSS-стилей. Без подключения стилей карта будет отображаться некорректно (без базового оформления интерфейса, контролов и слоёв).
import maplibregl from "maplibre-gl";
import "maplibre-gl/dist/maplibre-gl.css";
maplibregl — основной объект библиотеки, через который
создаётся карта, добавляются источники, слои и обработчики событий.
CSS-файл содержит:
После установки и импорта можно создать экземпляр карты, указав контейнер и базовую конфигурацию.
import maplibregl from "maplibre-gl";
import "maplibre-gl/dist/maplibre-gl.css";
const map = new maplibregl.Map({
container: "map",
style: "https://demotiles.maplibre.org/style.json",
center: [69.2401, 41.2995],
zoom: 10
});
Параметры:
container — DOM-элемент или его идентификаторstyle — URL или объект стиля MapLibre Style
Specificationcenter — начальные координаты [longitude,
latitude]zoom — начальный масштабКонтейнер карты должен существовать в DOM до инициализации:
<div id="map" style="width: 100%; height: 100vh;"></div>
Критически важно наличие заданной высоты, иначе WebGL-контекст не отобразит карту.
MapLibre GL JS рассчитан на работу в сборочных системах, поддерживающих ES Modules.
Vite автоматически обрабатывает импорт CSS и ESM-модулей:
import maplibregl from "maplibre-gl";
import "maplibre-gl/dist/maplibre-gl.css";
export function initMap() {
return new maplibregl.Map({
container: "map",
style: "https://demotiles.maplibre.org/style.json",
center: [0, 0],
zoom: 2
});
}
Дополнительная конфигурация обычно не требуется.
В Webpack-проектах необходимо убедиться, что обработка CSS включена через соответствующие loaders.
Базовая конфигурация:
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"]
}
]
}
};
Импорт библиотеки остаётся стандартным:
import maplibregl from "maplibre-gl";
import "maplibre-gl/dist/maplibre-gl.css";
MapLibre GL JS содержит встроенные типы TypeScript, поэтому
дополнительная установка @types не требуется.
Пример типизированной инициализации:
import maplibregl from "maplibre-gl";
const map: maplibregl.Map = new maplibregl.Map({
container: "map",
style: "https://demotiles.maplibre.org/style.json",
center: [10, 50],
zoom: 4
});
Типы обеспечивают автодополнение для:
load, move,
click)Marker, Popup,
GeoJSONSourceИногда CSS импортируется не через JavaScript, а через глобальное подключение.
<link
rel="stylesheet"
href="node_modules/maplibre-gl/dist/maplibre-gl.css"
/>
Такой подход используется реже, но может применяться в проектах без сборщика.
MapLibre GL JS поставляется как ES Module, что влияет на структуру импорта и tree-shaking.
Особенности:
Пример корректного использования:
import { Map, NavigationControl } from "maplibre-gl";
const map = new Map({
container: "map",
style: "https://demotiles.maplibre.org/style.json"
});
map.addControl(new NavigationControl());
MapLibre GL JS зависит от WebGL и DOM API, поэтому не может выполняться на сервере напрямую. В SSR-средах требуется условная инициализация.
let map;
if (typeof window !== "undefined") {
import("maplibre-gl").then((maplibregl) => {
map = new maplibregl.Map({
container: "map",
style: "https://demotiles.maplibre.org/style.json"
});
});
}
Такой подход предотвращает ошибки при серверном рендеринге.
Установка через npm фиксирует версию, что важно для стабильности отображения карт.
Просмотр установленной версии:
npm list maplibre-gl
Обновление:
npm update maplibre-gl
Установка конкретной версии:
npm install maplibre-gl@3.6.0
После установки в node_modules/maplibre-gl доступны
ключевые элементы:
dist/maplibre-gl.js — основной бандлdist/maplibre-gl.css — стилиdist/maplibre-gl.d.ts — TypeScript определенияЭта структура позволяет использовать библиотеку как в ESM, так и в legacy-сборках при необходимости.
В архитектуре SPA библиотека обычно инициализируется внутри компонентов.
Пример абстрактного компонента:
import maplibregl from "maplibre-gl";
import "maplibre-gl/dist/maplibre-gl.css";
export function createMap(containerId) {
const map = new maplibregl.Map({
container: containerId,
style: "https://demotiles.maplibre.org/style.json",
center: [30, 60],
zoom: 3
});
return map;
}
Такой подход позволяет переиспользовать и изолировать инициализацию карты внутри UI-слоя приложения.