В HERE Maps JavaScript API маркер представляет собой объект
H.map.Marker, который размещается на карте в заданной
географической точке. В основе позиционирования лежит объект
H.geo.Point, определяющий широту и долготу.
Минимальная структура создания маркера включает:
lat, lng)const point = new H.geo.Point(52.5200, 13.4050);
const marker = new H.map.Marker(point);
map.addObject(marker);
Маркер по умолчанию использует стандартную иконку библиотеки HERE и автоматически привязывается к пиксельному слою карты.
Каждый маркер опирается на географическую систему координат WGS84, где:
latitude — широта (ось север–юг)longitude — долгота (ось запад–восток)Создание точки может выполняться через конструктор
H.geo.Point или через литеральный объект координат, в
зависимости от версии API.
const coordinates = new H.geo.Point(
55.7558,
37.6173
);
const marker = new H.map.Marker(coordinates);
map.addObject(marker);
Важно учитывать, что порядок всегда фиксирован: сначала широта, затем долгота. Перепутанные значения приводят к смещению маркера в неправильный регион.
Маркер не отображается до момента добавления его в объектную модель
карты. Карта хранит все элементы как коллекцию объектов слоя
H.map.Object.
map.addObject(marker);
После добавления:
Удаление маркера выполняется аналогично:
map.removeObject(marker);
Для отображения набора точек используется последовательное создание
объектов H.map.Marker. Каждый маркер является независимой
сущностью, но может храниться в массиве для дальнейшего управления.
const locations = [
{ lat: 48.8566, lng: 2.3522 },
{ lat: 51.5074, lng: -0.1278 },
{ lat: 40.7128, lng: -74.0060 }
];
const markers = [];
locations.forEach((loc) => {
const point = new H.geo.Point(loc.lat, loc.lng);
const marker = new H.map.Marker(point);
map.addObject(marker);
markers.push(marker);
});
Такой подход позволяет централизованно управлять группой маркеров: удалять, обновлять или фильтровать их.
Маркер автоматически реагирует на изменения состояния карты:
Внутренне HERE Maps использует проекцию Web Mercator, что обеспечивает стабильное позиционирование объектов на глобальной карте.
Хотя базовая тема маркера фиксирована, даже простая замена иконки позволяет отличать объекты без усложнения логики.
const icon = new H.map.Icon('marker.png');
const marker = new H.map.Marker(point, {
icon: icon
});
map.addObject(marker);
Изменение иконки не влияет на координатную модель — маркер остаётся
привязанным к H.geo.Point.
При большом количестве маркеров удобно рассматривать их как набор объектов, поддерживающий операции добавления и удаления.
function clearMarkers(markersArray, mapInstance) {
markersArray.forEach((m) => {
mapInstance.removeObject(m);
});
markersArray.length = 0;
}
Такой подход упрощает синхронизацию визуального слоя с данными приложения.
Маркер не требует ручного пересчёта координат. При каждом изменении состояния карты происходит автоматическое обновление отображения:
Это достигается за счёт привязки к географическим координатам, а не к пиксельной сетке.
Часто встречающиеся проблемы связаны с неправильной инициализацией:
map.addObjectПример некорректного подхода:
const point = new H.geo.Point("52.5", "13.4"); // строки вместо чисел
Корректная форма:
const point = new H.geo.Point(52.5, 13.4);
Маркер можно не пересоздавать при изменении координат. Вместо этого применяется обновление геометрии:
marker.setGeometry(new H.geo.Point(59.9311, 30.3609));
Это снижает нагрузку на карту при динамических обновлениях данных и позволяет эффективно работать с потоковыми источниками координат.
Каждый маркер представляет собой связку между визуальным объектом и географической сущностью. При проектировании логики важно поддерживать соответствие между:
H.map.MarkerТакой подход обеспечивает предсказуемость поведения при масштабировании, фильтрации и обновлении данных на карте.