HERE Technologies предоставляет экосистему геопространственных сервисов, в которой JavaScript API для карт позволяет реализовать непрерывное отслеживание перемещения объектов в реальном времени. В основе лежит сочетание браузерного Geolocation API, механизмов обновления состояния карты и объектов слоя (markers, polylines), а также средств оптимизации частоты обновлений и сглаживания координат.
HERE Maps API for JavaScript строится вокруг объектной модели карты, где любое движение представляется изменением состояния геообъектов. Отслеживание перемещения включает несколько уровней: получение координат, интерпретация траектории, визуализация пути и управление производительностью при частых обновлениях.
Основой трекинга является браузерный интерфейс:
navigator.geolocation.watchPositionnavigator.geolocation.getCurrentPositionНа практике используется именно watchPosition, так как
он возвращает поток обновлений координат.
Ключевые параметры конфигурации:
enableHighAccuracy — включает GPS-уровень точностиmaximumAge — разрешает кэшированные координатыtimeout — максимальное время ожиданияПример логики получения данных:
Для отслеживания движения требуется базовая инициализация карты:
Основная структура:
В HERE Maps API карта является контейнером для геометрических объектов, и любое движение реализуется обновлением этих объектов, а не перерисовкой всей сцены.
Маркер — ключевой визуальный элемент трекинга.
Он создаётся один раз и затем обновляется:
setGeometryЛогика:
map.addObject(marker)Критически важно избегать пересоздания маркера на каждом шаге, так как это приводит к утечкам производительности и дерганой анимации.
Каждое новое значение координат из watchPosition
должно:
Типовой алгоритм:
H.geo.PointПример логики центрирования:
map.setCenter(point, true)Отслеживание перемещения редко ограничивается одним маркером. Обычно требуется отображение пути.
Для этого используется Polyline:
Алгоритм:
Особенности:
Сырые данные геолокации часто содержат шум:
Для устранения применяются методы:
Берутся последние N точек и вычисляется среднее значение координат.
Формула:
x_t = p_t + (1 - ) x_{t-1}
где:
p_t — новая точкаx_t — сглаженная позицияα — коэффициент сглаживанияЕсли расстояние между точками слишком велико за короткое время — точка отбрасывается как аномальная.
Для визуализации направления (heading) вычисляется азимут между двумя точками.
Используется геодезическая формула:
= (()(_2),(_1)(_2)-(_1)(_2)())
где:
φ — широтаλ — долготаРезультат используется для:
Резкие скачки между GPS-точками выглядят неестественно. Для сглаживания применяется интерполяция.
Основные подходы:
Между двумя точками создаются промежуточные позиции:
t ∈ [0,1]Позволяет синхронизировать движение с частотой экрана:
Даже при высокочастотных GPS-данных (например, 10–20 обновлений/сек) визуальное обновление ограничивается 30–60 FPS.
Каждая точка содержит параметр accuracy (в метрах). Он используется для:
На карте это может отображаться через Circle:
Если accuracy слишком велика:
Камера карты — отдельный объект управления.
Режимы слежения:
Пользователь может перемещать карту, трекинг не вмешивается.
Карта всегда центрируется на объекте.
Центрирование происходит только при выходе объекта за границы видимой области.
Реализация:
map.getViewModel().getLookAtData()При реальном трекинге возможны десятки обновлений в секунду.
Основные методы оптимизации:
Ограничение частоты обновлений:
Накопление точек и обновление полилинии раз в N миллисекунд
Удаление близких точек:
В реальных условиях GPS может пропадать:
Стратегии:
Несколько маркеров одновременно:
Каждый объект имеет:
Отслеживание входа/выхода из области:
Логика:
Трекинг может быть не только реальным временем, но и режимом воспроизведения.
Подход:
Режимы:
В промышленных системах координаты часто поступают не из браузера, а из:
HERE Maps API выступает только как слой визуализации:
Каждая из этих проблем приводит либо к деградации производительности, либо к визуально нестабильному поведению трекинга.