Подключение HERE Maps API через CDN является самым быстрым способом начать работу с картографическими сервисами HERE в веб-приложениях. Такой подход не требует установки пакетов через npm, настройки сборщиков проектов или конфигурации модулей. Все необходимые библиотеки загружаются непосредственно с серверов HERE при открытии страницы.
CDN-подключение особенно удобно для:
Основная идея заключается в подключении готовых JavaScript-файлов и
таблиц стилей через теги <script> и
<link>.
Перед подключением библиотеки необходимо получить ключ доступа.
Последовательность действий:
API Key используется для авторизации запросов к сервисам платформы и является обязательным параметром при инициализации карты.
Пример ключа:
const apiKey = "YOUR_API_KEY";
Вместо строки YOUR_API_KEY необходимо использовать
реальный ключ, выданный платформой HERE.
Для отображения карты требуется подключить несколько файлов.
<link
rel="stylesheet"
href="https://js.api.here.com/v3/3.1/mapsjs-ui.css"
/>
Этот файл отвечает за стили пользовательского интерфейса карты:
<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
Модуль содержит базовую инфраструктуру библиотеки:
<script src="https://js.api.here.com/v3/3.1/mapsjs-service.js"></script>
Модуль предоставляет доступ к:
<script src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js"></script>
Позволяет работать с:
<script src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
Добавляет готовые элементы управления:
Чаще всего используется следующий комплект:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<link
rel="stylesheet"
href="https://js.api.here.com/v3/3.1/mapsjs-ui.css"
/>
<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-service.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
<title>HERE Maps</title>
</head>
<body>
</body>
</html>
После загрузки этих файлов библиотека становится доступной через
глобальный объект H.
Карта отображается внутри HTML-элемента.
Пример:
<div id="map"></div>
Для корректного отображения необходимо задать размеры.
<style>
#map {
width: 100%;
height: 500px;
}
</style>
Если размеры не указаны, карта не будет видна, поскольку элемент получит нулевую высоту.
После подключения библиотеки создается объект платформы.
const platform = new H.service.Platform({
apikey: "YOUR_API_KEY"
});
Объект Platform выступает точкой входа ко всем сервисам
HERE.
Через него можно получать:
После создания платформы необходимо запросить набор стандартных слоев.
const defaultLayers = platform.createDefaultLayers();
Метод возвращает объект с различными вариантами отображения карт.
Примеры слоев:
defaultLayers.vector.normal.map
defaultLayers.vector.normal.traffic
defaultLayers.raster.normal.map
Наиболее часто используется:
defaultLayers.vector.normal.map
Это современная векторная карта с поддержкой масштабирования и высокой производительности.
Следующий шаг — создание экземпляра карты.
const map = new H.Map(
document.getElementById("map"),
defaultLayers.vector.normal.map,
{
zoom: 10,
center: {
lat: 55.7558,
lng: 37.6176
}
}
);
Параметры конструктора:
| Параметр | Описание |
|---|---|
| Контейнер | HTML-элемент для отображения |
| Слой карты | Источник картографических данных |
| Настройки | Центр карты и масштаб |
Без подключения обработчиков карта остается статичной.
Для активации взаимодействия используется следующий код:
const beh * avior = new H.mapevents.Behavior(
new H.mapevents.MapEvents(map)
);
После этого становятся доступны:
Для отображения стандартных элементов управления выполняется инициализация UI.
const ui = H.ui.UI.createDefault(map, defaultLayers);
После выполнения кода на карте автоматически появятся:
Ниже представлен полноценный пример страницы с HERE Maps API, подключенной через CDN.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<link
rel="stylesheet"
href="https://js.api.here.com/v3/3.1/mapsjs-ui.css"
/>
<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-service.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
<style>
#map {
width: 100%;
height: 500px;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
const platform = new H.service.Platform({
apikey: "YOUR_API_KEY"
});
const defaultLayers = platform.createDefaultLayers();
const map = new H.Map(
document.getElementById("map"),
defaultLayers.vector.normal.map,
{
zoom: 12,
center: {
lat: 55.7558,
lng: 37.6176
}
}
);
const beh * avior = new H.mapevents.Behavior(
new H.mapevents.MapEvents(map)
);
const ui = H.ui.UI.createDefault(
map,
defaultLayers
);
</script>
</body>
</html>
После открытия страницы будет отображена интерактивная карта с центром в Москве и стандартными элементами управления.
Каждый подключаемый файл отвечает за отдельную часть функциональности.
| Файл | Назначение |
|---|---|
| mapsjs-core.js | Базовое ядро библиотеки |
| mapsjs-service.js | Сервисы HERE Platform |
| mapsjs-mapevents.js | Обработка событий |
| mapsjs-ui.js | Интерфейс пользователя |
| mapsjs-ui.css | Стили UI-компонентов |
Такое разделение позволяет подключать только необходимые модули и уменьшать объем загружаемых данных.
Например, если пользовательский интерфейс не нужен, можно отказаться от:
<script src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
<link
rel="stylesheet"
href="https://js.api.here.com/v3/3.1/mapsjs-ui.css"
/>
После подключения CDN-файлов глобальный объект H должен
существовать в браузере.
Проверка:
console.log(H);
Или:
if (typeof H !== "undefined") {
console.log("HERE Maps загружен");
}
При успешной загрузке в консоли появится объект со всеми пространствами имен библиотеки.
Симптомы:
Пример ошибки:
Unauthorized
Необходимо проверить правильность ключа и его статус в панели управления HERE.
Ошибка:
<div id="map"></div>
#map {
width: 100%;
}
В этом случае карта не отображается.
Правильно:
#map {
width: 100%;
height: 500px;
}
Некоторые модули зависят от ядра библиотеки.
Неверно:
<script src="mapsjs-ui.js"></script>
<script src="mapsjs-core.js"></script>
Верно:
<script src="mapsjs-core.js"></script>
<script src="mapsjs-service.js"></script>
<script src="mapsjs-mapevents.js"></script>
<script src="mapsjs-ui.js"></script>
Ошибка возникает, если контейнер карты еще не существует.
Неверно:
const map = new H.Map(
document.getElementById("map"),
layer
);
при расположении скрипта выше элемента:
<div id="map"></div>
Правильные варианты:
<script>
...
</script>
</body>
или
window.addEventListener("DOMContentLoaded", () => {
// код инициализации
});
Простота подключения
Достаточно добавить несколько тегов <script> и
<link>.
Быстрый старт
Карта может быть запущена в течение нескольких минут после получения API Key.
Отсутствие сборки проекта
Не требуется настройка Webpack, Vite, Parcel или других инструментов.
Автоматическая доставка файлов
Содержимое загружается с глобальной сети доставки контента, обеспечивающей высокую скорость доступа.
Удобство обучения
CDN-подключение позволяет сосредоточиться на изучении возможностей HERE Maps API без дополнительной инфраструктурной настройки.
Наиболее эффективным данный способ является в следующих сценариях:
Для крупных приложений с модульной архитектурой чаще применяется установка пакетов через npm и интеграция библиотеки в систему сборки проекта, однако CDN-подключение остается базовым и наиболее наглядным способом начала работы с HERE Maps API в JavaScript.