Минимальная интеграция MapLibre GL JS требует корректной
HTML-разметки, подключения стилей библиотеки, JavaScript-движка и
обязательного контейнера для отрисовки карты. Даже в простейшем варианте
важно соблюдение нескольких критичных условий: наличие блока под карту,
фиксированная высота контейнера и инициализация через API
Map.
Библиотека MapLibre GL JS распространяется через CDN или пакетные менеджеры. Для минимального шаблона используется CDN-подключение стилей и скрипта.
Основные ресурсы:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MapLibre GL JS Map</title>
<!-- Подключение стилей MapLibre -->
<link
rel="stylesheet"
href="https://unpkg.com/maplibre-gl@latest/dist/maplibre-gl.css"
/>
<style>
/* Обязательное правило: контейнер карты должен иметь высоту */
html, body {
margin: 0;
height: 100%;
}
#map {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<!-- Контейнер карты -->
<div id="map"></div>
<!-- Подключение JavaScript библиотеки -->
<script src="https://unpkg.com/maplibre-gl@latest/dist/maplibre-gl.js"></script>
<script>
const map = new maplibregl.Map({
container: 'map',
style: 'https://demotiles.maplibre.org/style.json',
center: [37.6173, 55.7558],
zoom: 10
});
</script>
</body>
</html>
MapLibre GL JS использует WebGL-контекст, который привязывается к DOM-элементу. Ключевым элементом выступает контейнер:
<div id="map"></div>
Отсутствие высоты приводит к ситуации, при которой карта инициализируется корректно, но не отображается.
MapLibre не управляет размерами страницы. Отображение зависит от CSS:
html, body {
margin: 0;
height: 100%;
}
#map {
width: 100%;
height: 100%;
}
Фиксированная высота:
#map {
width: 100%;
height: 500px;
}
Относительная высота через flex-layout:
body {
margin: 0;
display: flex;
flex-direction: column;
height: 100vh;
}
#map {
flex: 1;
}
Основной объект библиотеки — maplibregl.Map. Он
принимает конфигурационный объект.
const map = new maplibregl.Map({
container: 'map',
style: 'https://demotiles.maplibre.org/style.json',
center: [37.6173, 55.7558],
zoom: 10
});
[longitude, latitude]Параметр style является критическим. Он определяет:
В минимальном примере используется публичный демо-стиль:
https://demotiles.maplibre.org/style.json
{
"version": 8,
"sources": {},
"layers": []
}
Без корректного style JSON карта не отрисует данные.
MapLibre GL JS использует формат:
[longitude, latitude]
Пример:
center: [55.2708, 25.2048]
Ошибкой считается обратный порядок [lat, lng],
приводящий к смещению отображения на глобусе.
При открытии HTML-файла напрямую через file:// могут
возникать ограничения браузера:
Используется локальный сервер:
npx serve .
или
python -m http.server 8080
Последовательность инициализации:
#map { width: 100%; }
Результат: пустой экран без ошибок в консоли.
style: 'style.json'
Результат: ошибка загрузки источника данных.
center: [55.75, 37.61]
Результат: карта уходит в неверную точку.
Без дополнительных стилей и параметров допустим следующий каркас:
<div id="map" style="width:100%;height:100vh;"></div>
<script src="https://unpkg.com/maplibre-gl@latest/dist/maplibre-gl.js"></script>
<script>
new maplibregl.Map({
container: 'map',
style: 'https://demotiles.maplibre.org/style.json'
});
</script>
Такой вариант демонстрирует минимальный объём кода, необходимый для запуска WebGL-карты.
MapLibre GL JS использует WebGL 2D/3D контекст, что означает:
Даже минимальный шаблон уже включает полноценный графический пайплайн, работающий поверх HTML-страницы.