Геометрические объекты на карте в JavaScript API платформы HERE Technologies реализуются как полноценные слои поверх базовой тайловой подложки и используются для визуализации пространственных областей. Среди наиболее часто применяемых примитивов — окружности и эллипсы, которые представляют собой параметризованные геозоны, зависящие от координат центра и метрических характеристик.
В экосистеме HERE Maps API for JavaScript данные фигуры относятся к
объектам H.map.Object и интегрируются в карту через слой
map.addObject(), что позволяет управлять их отображением,
стилями и взаимодействием.
Круг в API реализуется через класс H.map.Circle. Его
основой служит геодезическая модель, в которой радиус измеряется в
метрах, а форма рассчитывается с учетом проекции карты.
const circle = new H.map.Circle(
{ lat: 52.5, lng: 13.4 },
1000,
{
style: {
strokeColor: 'rgba(55, 85, 170, 0.6)',
fillColor: 'rgba(55, 85, 170, 0.3)',
lineWidth: 2
}
}
);
map.addObject(circle);
Параметры конструктора:
{lat, lng}Круг в HERE Maps API не является евклидовой проекцией. Его форма корректируется в зависимости от широты:
Это важно при построении зон покрытия, где требуется точность в реальных расстояниях, а не в пикселях.
Стили задаются через объект style и могут включать:
strokeColor — цвет границыfillColor — заливкаlineWidth — толщина линииlineDash — пунктирная линияПример динамического изменения стиля:
circle.setStyle({
fillColor: 'rgba(200, 0, 0, 0.2)',
strokeColor: 'rgba(200, 0, 0, 0.8)',
lineWidth: 3
});
Изменения применяются без необходимости пересоздания объекта, что важно для интерактивных сценариев.
Круги поддерживают стандартные события карты:
circle.addEventListener('tap', function (evt) {
console.log('Круг выбран');
});
Событийная модель наследуется от H.mapevents, что
позволяет использовать единый механизм взаимодействия для всех
объектов.
Эллиптические области реализуются через класс
H.map.Ellipse. Они применяются для моделирования
направленных зон покрытия, например:
const ellipse = new H.map.Ellipse(
{ lat: 52.5, lng: 13.4 },
2000,
1000,
45,
{
style: {
fillColor: 'rgba(0, 150, 136, 0.3)',
strokeColor: 'rgba(0, 150, 136, 0.8)',
lineWidth: 2
}
}
);
map.addObject(ellipse);
Эллипс задается набором геометрических характеристик:
{lat, lng}Эллипсы используются там, где требуется учитывать направленность процессов:
И круги, и эллипсы являются интерактивными объектами слоя карты:
map.addObject(circle);
map.addObject(ellipse);
map.removeObject(circle);
Объекты можно комбинировать с группами:
const group = new H.map.Group();
group.addObjects([circle, ellipse]);
map.addObject(group);
Окружности часто используются для реализации геозон:
function isInside(point, circle) {
const center = circle.getCenter();
const radius = circle.getRadius();
const distance = map.geo.distance(center, point);
return distance <= radius;
}
Такие проверки применяются в:
При работе с десятками и сотнями кругов:
Круги могут изменяться в реальном времени:
circle.setRadius(1500);
Это используется в сценариях:
Круги и эллипсы часто применяются совместно:
Такая комбинация позволяет строить многослойные пространственные модели, где каждая геометрия отражает отдельный фактор реальности.