Статические карты (Static Maps) представляют собой изображения
картографических данных, формируемые сервером и возвращаемые в виде
готового графического файла. В отличие от интерактивных карт, основанных
на объекте H.Map, статическая карта не содержит элементов
управления, не поддерживает масштабирование пользователем и не требует
выполнения сложной клиентской логики.
В экосистеме HERE Maps статические карты применяются для решения широкого спектра задач:
Основное преимущество подхода заключается в минимальной нагрузке на браузер и высокой скорости отображения.
Генерация статической карты выполняется через HTTP-запрос к серверу HERE.
Общая схема выглядит следующим образом:
<img>.С точки зрения JavaScript статическая карта является обычным изображением, URL которого содержит набор параметров для настройки внешнего вида.
Для работы необходимо получить API Key в консоли разработчика HERE.
После создания проекта формируется ключ:
const apiKey = 'YOUR_API_KEY';
Далее он передается в параметры URL.
Простейший пример отображения карты города:
<img
src="https://image.maps.ls.hereapi.com/mia/1.6/mapview
?apiKey=YOUR_API_KEY
&c=55.7512442,37.618423
&z=12
&w=800
&h=500"
>
Здесь используются следующие параметры:
| Параметр | Описание |
|---|---|
| c | Координаты центра |
| z | Масштаб |
| w | Ширина изображения |
| h | Высота изображения |
| apiKey | Ключ доступа |
Результатом станет изображение карты Москвы с указанным масштабом.
Чаще всего адрес создается программно.
function createStaticMapUrl(lat, lng) {
const apiKey = 'YOUR_API_KEY';
return `https://image.maps.ls.hereapi.com/mia/1.6/mapview
?apiKey=${apiKey}
&c=${lat},${lng}
&z=14
&w=800
&h=600`;
}
Использование:
const image = document.createElement('img');
image.src = createStaticMapUrl(
55.751244,
37.618423
);
document.body.appendChild(image);
Размер карты задается параметрами:
w
h
Пример:
const url =
`https://image.maps.ls.hereapi.com/mia/1.6/mapview
?apiKey=${apiKey}
&c=55.751244,37.618423
&z=13
&w=1200
&h=800`;
Получается изображение высокого разрешения, пригодное для печати или вставки в документы.
Масштаб карты задается параметром:
z
Типичные значения:
| Масштаб | Назначение |
|---|---|
| 3 | Континент |
| 5 | Страна |
| 8 | Регион |
| 12 | Город |
| 15 | Район |
| 18 | Улица |
| 20 | Здание |
Пример:
const url =
`https://image.maps.ls.hereapi.com/mia/1.6/mapview
?apiKey=${apiKey}
&c=55.751244,37.618423
&z=18
&w=800
&h=600`;
Карта будет сфокусирована на небольшом городском участке.
HERE предоставляет несколько вариантов отображения.
Параметр:
t
Основные значения:
| Значение | Тип |
|---|---|
| 0 | Нормальная карта |
| 1 | Спутниковая |
| 2 | Гибрид |
| 3 | Рельеф |
Пример спутниковой карты:
const url =
`https://image.maps.ls.hereapi.com/mia/1.6/mapview
?apiKey=${apiKey}
&c=55.751244,37.618423
&z=14
&t=1
&w=800
&h=600`;
Одной из наиболее востребованных возможностей является отображение точек интереса.
Пример:
const url =
`https://image.maps.ls.hereapi.com/mia/1.6/mapview
?apiKey=${apiKey}
&c=55.751244,37.618423
&z=13
&w=800
&h=600
&poix0=55.751244,37.618423;ff0000;ffffff;15;A`;
Параметр poix0 описывает маркер.
Структура:
latitude,longitude;
markerColor;
textColor;
size;
label
Результат:
Количество маркеров не ограничивается одной точкой.
const url =
`https://image.maps.ls.hereapi.com/mia/1.6/mapview
?apiKey=${apiKey}
&c=55.751244,37.618423
&z=11
&w=1000
&h=700
&poix0=55.751244,37.618423;ff0000;ffffff;15;A
&poix1=55.761244,37.648423;0000ff;ffffff;15;B
&poix2=55.731244,37.598423;00aa00;ffffff;15;C`;
На карте будут одновременно отображены три точки.
При динамической генерации удобнее использовать массив данных.
const markers = [
{
lat: 55.75,
lng: 37.61,
label: 'A'
},
{
lat: 55.76,
lng: 37.65,
label: 'B'
},
{
lat: 55.73,
lng: 37.59,
label: 'C'
}
];
Формирование URL:
const params = markers
.map((marker, index) => {
return `poix${index}=${marker.lat},
${marker.lng};
ff0000;
ffffff;
15;
${marker.label}`;
})
.join('&');
Создание итогового адреса:
const url =
`https://image.maps.ls.hereapi.com/mia/1.6/mapview
?apiKey=${apiKey}
&c=55.75,37.61
&z=12
&w=1000
&h=700
&${params}`;
Статические карты позволяют визуализировать маршрут между точками.
Маршрут обычно строится через Routing API, после чего полученная геометрия передается в Static Maps API.
Схема работы:
Routing API
↓
Получение polyline
↓
Static Map API
↓
Готовое изображение маршрута
Подход активно используется в:
После получения геометрии маршрута формируется параметр линии.
Пример структуры:
const polyline =
'55.75,37.61,55.76,37.63,55.77,37.65';
URL:
const url =
`https://image.maps.ls.hereapi.com/mia/1.6/route
?apiKey=${apiKey}
&r=${polyline}
&w=1000
&h=700`;
В результате создается изображение маршрута между указанными точками.
Допустим имеется список координат курьера.
const points = [
[55.75, 37.61],
[55.76, 37.63],
[55.77, 37.65],
[55.78, 37.67]
];
Подготовка строки маршрута:
const route = points
.map(point => point.join(','))
.join(',');
Создание изображения:
const imageUrl =
`https://image.maps.ls.hereapi.com/mia/1.6/route
?apiKey=${apiKey}
&r=${route}
&w=1200
&h=800`;
Такой подход позволяет генерировать маршрутные карты без подключения полноценного интерактивного интерфейса.
Для экранов высокой плотности пикселей необходимо создавать карты большего разрешения.
Пример:
const width = 1600;
const height = 1200;
Отображение:
<img
width="800"
height="600"
src="...">
Физически браузер показывает изображение меньшего размера, однако качество остается значительно выше.
Часто URL создается после получения данных с сервера.
async function loadMap() {
const response =
await fetch('/api/location');
const location =
await response.json();
const image =
document.querySelector('#map');
image.src =
createStaticMapUrl(
location.lat,
location.lng
);
}
Подход удобен при отображении объектов из базы данных.
Распространенный сценарий — вывод мини-карты рядом с описанием объекта.
<div class="office-card">
<h3>Главный офис</h3>
<img id="officeMap">
</div>
Jav * aScript:
document
.getElementById('officeMap')
.src =
createStaticMapUrl(
55.751244,
37.618423
);
Пользователь получает визуальную привязку адреса без загрузки полноценного картографического движка.
Статические изображения хорошо подходят для кэширования.
Возможные варианты:
Пример сохранения URL:
localStorage.setItem(
'officeMap',
imageUrl
);
Повторная генерация становится ненужной до изменения параметров карты.
Часто URL формируется на стороне Node.js.
function buildMapUrl(lat, lng) {
return `
https://image.maps.ls.hereapi.com/mia/1.6/mapview
?apiKey=${process.env.HERE_API_KEY}
&c=${lat},${lng}
&z=14
&w=800
&h=600`;
}
Далее адрес передается в шаблонизатор:
res.render('office', {
mapUrl: buildMapUrl(
office.lat,
office.lng
)
});
Шаблон:
<img src="<%= mapUrl %>">
Одной из наиболее сильных сторон Static Maps API является возможность вставки изображений в документы.
Последовательность работы:
Получение URL карты
↓
Загрузка изображения
↓
Вставка в PDF
↓
Генерация отчета
Такой подход широко применяется в:
По сравнению с интерактивными картами существуют определенные ограничения:
Несмотря на это, статические карты остаются эффективным инструментом для отображения географической информации в ситуациях, где интерактивность не требуется.
Статические карты подходят для:
Интерактивные карты предпочтительны для:
Грамотное сочетание Static Maps API и интерактивных возможностей HERE Maps позволяет создавать производительные картографические решения, оптимизированные как для веб-приложений, так и для серверной генерации графических материалов.