OpenLayers — одна из наиболее мощных и функциональных JavaScript-библиотек для создания интерактивных карт в веб-приложениях. Библиотека предоставляет широкий набор инструментов для отображения картографических данных, работы с различными источниками карт, визуализации географических объектов, обработки пользовательских событий и интеграции с геоинформационными сервисами.
Перед началом разработки необходимо правильно установить и подключить библиотеку к проекту. От выбранного способа подключения зависит удобство дальнейшей работы, совместимость с инструментами сборки и возможность использования современных возможностей JavaScript.
Существует несколько основных способов подключения OpenLayers:
Каждый подход ориентирован на определённый тип проекта.
Самый простой способ начать работу с OpenLayers — использовать готовые файлы библиотеки через CDN (Content Delivery Network).
OpenLayers использует собственные стили для элементов управления картой, поэтому подключение CSS является обязательным.
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/ol@latest/ol.css"
>
<script src="https://cdn.jsdelivr.net/npm/ol@latest/dist/ol.js"></script>
После подключения глобальный объект ol становится
доступным в браузере.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>OpenLayers</title>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/ol@latest/ol.css"
>
<style>
#map {
width: 100%;
height: 500px;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="https://cdn.jsdelivr.net/npm/ol@latest/dist/ol.js"></script>
<script>
const map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: ol.proj.fromLonLat([37.6176, 55.7558]),
zoom: 10
})
});
</script>
</body>
</html>
Для профессиональной разработки чаще используется пакетный менеджер npm.
mkdir openlayers-project
cd openlayers-project
npm init -y
npm install ol
После установки пакет появится в каталоге:
node_modules/
└── ol/
Информация о зависимости будет записана в файл
package.json.
Пример:
{
"dependencies": {
"ol": "^10.6.1"
}
}
Типичная структура проекта может выглядеть следующим образом:
project/
│
├── node_modules/
│
├── src/
│ ├── main.js
│ └── style.css
│
├── package.json
└── index.html
Каталог src обычно содержит исходный код приложения.
Современные версии библиотеки ориентированы на модульную архитектуру.
import Map from 'ol/Map.js';
import View from 'ol/View.js';
import TileLayer from 'ol/layer/Tile.js';
import OSM from 'ol/source/OSM.js';
import Map from 'ol/Map.js';
import View from 'ol/View.js';
import TileLayer from 'ol/layer/Tile.js';
import OSM from 'ol/source/OSM.js';
const map = new Map({
target: 'map',
layers: [
new TileLayer({
source: new OSM()
})
],
view: new View({
center: [0, 0],
zoom: 2
})
});
Главное преимущество такого подхода заключается в возможности импортировать только необходимые компоненты.
Стили библиотеки также необходимо импортировать.
В основном файле приложения:
import 'ol/ol.css';
Либо в отдельном файле стилей:
@import "ol/ol.css";
Без подключения CSS некоторые элементы управления картой могут отображаться некорректно.
Vite является одним из наиболее популярных инструментов сборки современных фронтенд-приложений.
npm create vite@latest
Или:
npm create vite@latest my-map-app
После выбора шаблона необходимо установить зависимости:
npm install
npm install ol
import './style.css';
import 'ol/ol.css';
import Map from 'ol/Map.js';
import View from 'ol/View.js';
import TileLayer from 'ol/layer/Tile.js';
import OSM from 'ol/source/OSM.js';
const map = new Map({
target: 'map',
layers: [
new TileLayer({
source: new OSM()
})
],
view: new View({
center: [0, 0],
zoom: 2
})
});
<div id="map"></div>
html,
body,
#map {
margin: 0;
width: 100%;
height: 100%;
}
npm run dev
По умолчанию Vite запускает локальный сервер разработки с автоматической перезагрузкой страницы при изменении файлов.
Webpack остаётся популярным решением для крупных проектов.
npm install ol
npm install --save-dev webpack webpack-cli webpack-dev-server
import 'ol/ol.css';
import Map from 'ol/Map.js';
import View from 'ol/View.js';
import TileLayer from 'ol/layer/Tile.js';
import OSM from 'ol/source/OSM.js';
Понадобятся дополнительные пакеты:
npm install --save-dev css-loader style-loader
Пример настройки:
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
}
};
После этого стили OpenLayers будут корректно подключаться через импорт.
После установки полезно убедиться, что библиотека работает корректно.
console.log(Map);
Если модуль импортирован правильно, в консоли браузера появится описание класса.
На странице должна появиться:
Наличие этих признаков означает, что библиотека подключена корректно.
Наиболее распространённая причина — отсутствие размеров контейнера карты.
Неверно:
<div id="map"></div>
#map {
}
Правильно:
#map {
width: 100%;
height: 500px;
}
Если карта отображается некорректно или отсутствуют элементы управления, следует проверить импорт файла:
import 'ol/ol.css';
или
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/ol@latest/ol.css"
>
Неверно:
import Map from 'ol/Map';
В современных версиях рекомендуется использовать полный путь:
import Map from 'ol/Map.js';
Сообщение вида:
Cannot resolve module 'ol'
означает отсутствие установленного пакета.
Решение:
npm install ol
Если указан несуществующий элемент:
target: 'map'
а в HTML отсутствует
<div id="map"></div>
карта создана не будет.
Иногда требуется убедиться, какая версия библиотеки используется в проекте.
Через npm:
npm list ol
Либо через файл:
{
"dependencies": {
"ol": "^10.6.1"
}
}
Контроль версии особенно важен при изучении примеров, поскольку API OpenLayers постепенно развивается, а отдельные компоненты могут изменяться между крупными релизами.
| Сценарий | Рекомендуемый способ |
|---|---|
| Быстрый прототип | CDN |
| Учебные примеры | CDN или Vite |
| Небольшое приложение | Vite |
| Корпоративная разработка | npm + Vite |
| Большой проект со сложной сборкой | npm + Webpack |
| Современная модульная архитектура | ES-модули |
Для большинства современных проектов оптимальным вариантом считается установка через npm с использованием ES-модулей и сборщика Vite. Такой подход обеспечивает удобную разработку, эффективную оптимизацию размера итогового приложения и полный доступ ко всем возможностям актуальных версий OpenLayers.