Работа с прямоугольными областями в HERE Maps API строится вокруг географических границ (bounds), которые задаются двумя точками: юго-западным и северо-восточным углами. Такой подход позволяет эффективно описывать зоны интереса, зоны поиска, области отображения данных и пользовательские выделения на карте без необходимости строить полноценные многоугольники.
В основе прямоугольника лежит объект ограничивающего прямоугольника (bounding box). Он определяется парой координат:
Эти координаты формируют минимальный прямоугольник, параллельный осям широты и долготы.
В терминах API используется структура наподобие:
const bounds = new H.geo.Rect(
55.70, // северная граница (lat)
37.80, // восточная граница (lng)
55.60, // южная граница (lat)
37.60 // западная граница (lng)
);
Такой прямоугольник автоматически нормализуется системой координат и учитывает направление широты и долготы.
Класс H.geo.Rect в HERE Maps API представляет
прямоугольную географическую область и используется как базовый
строительный блок для:
Внутренне объект хранит четыре границы:
Проверка принадлежности точки к прямоугольнику выполняется через метод:
const isInside = bounds.containsLatLng(55.65, 37.70);
Результат операции основан на сравнении координат без необходимости геометрических вычислений высокой сложности.
Часто прямоугольная область создаётся на основе текущего viewport карты:
const rect = map.getViewModel().getLookAtData().bounds;
Этот подход используется для:
Прямоугольник становится синхронизированным с текущим состоянием камеры.
Визуальное представление прямоугольника реализуется через
H.map.Rect, который является графическим слоем поверх
географического объекта H.geo.Rect.
const rect = new H.map.Rect(bounds, {
style: {
fillColor: 'rgba(0, 128, 255, 0.2)',
strokeColor: '#0077ff',
lineWidth: 2
}
});
map.addObject(rect);
Здесь разделяются два уровня:
H.geo.Rect)H.map.Rect)Такое разделение позволяет переиспользовать геометрию без привязки к рендерингу.
Изменение области осуществляется через обновление границ:
rect.setBoundingBox(new H.geo.Rect(
55.75,
37.85,
55.55,
37.55
));
При изменении границ автоматически пересчитывается:
Это позволяет реализовывать динамические инструменты выделения.
Прямоугольники поддерживают стандартную модель событий карты HERE Maps API:
rect.addEventListener('tap', function (evt) {
console.log('Прямоугольник выбран');
});
События включают:
tap — выбор объектаpointerenter — наведениеpointerleave — уход курсораОбработка событий происходит на уровне интерактивного слоя карты.
Прямоугольные области часто используются как ускоренный инструмент пространственных вычислений.
const overlap = rect1.getBoundingBox().intersectsRect(rect2.getBoundingBox());
Используется для:
const center = bounds.getCenter();
Центральная точка вычисляется как среднее значение широты и долготы границ.
Прямоугольники активно применяются при работе с геоданными. Например, при запросе объектов в пределах видимой области:
const bbox = map.getViewModel().getLookAtData().bounds;
service.search({
at: `${bbox.getCenter().lat},${bbox.getCenter().lng}`,
limit: 50
});
Логика фильтрации часто переносится на серверную сторону, где bounding box используется как ограничитель выборки.
Работа с прямоугольниками требует согласования экранных и географических координат.
const geoPoint = map.screenToGeo(x, y);
const screenPoint = map.geoToScreen(lat, lng);
Эти преобразования используются при:
Прямоугольники часто используются как инструмент пользовательского выбора.
Логика включает:
let start;
map.addEventListener('dragstart', (e) => {
start = map.screenToGeo(e.currentPointer.viewportX, e.currentPointer.viewportY);
});
map.addEventListener('drag', (e) => {
const end = map.screenToGeo(e.currentPointer.viewportX, e.currentPointer.viewportY);
const bounds = new H.geo.Rect(
Math.max(start.lat, end.lat),
Math.max(start.lng, end.lng),
Math.min(start.lat, end.lat),
Math.min(start.lng, end.lng)
);
rect.setBoundingBox(bounds);
});
Такой подход используется в инструментах анализа данных и георазметки.
Прямоугольники считаются одной из наиболее дешёвых геометрий с точки зрения вычислений:
В отличие от многоугольников, отсутствует необходимость в сложных алгоритмах пересечения рёбер.
В HERE Maps API это делает прямоугольники предпочтительными для:
Несмотря на эффективность, прямоугольники имеют ряд ограничений:
При работе с глобальными зонами используется нормализация долготы и разбиение области на несколько сегментов.
Прямоугольные области используются как базовый инструмент в различных задачах:
Каждый сценарий опирается на простую модель bounds без необходимости сложной геометрической обработки.
Прямоугольники часто выступают промежуточным слоем между точками и полигонами:
Такой каскад позволяет балансировать точность и производительность при работе с картографическими данными в HERE Maps API