Вы должны l oop над maneuver
массивом и проверить расстояние между позицией маневра и желаемым географическим местоположением, используя метод H.geo.Point # distance , примерно так:
// ...
// assuming we're in calculateRoute response callback
// and result is callback's parameter
var maneuver = result.response.route[0].leg[0].maneuver,
testPosition = {lat: 50, lng: 13},
closestManeuver,
closestManeuverPoint,
minDistance = Infinity;
// calculate the closest maneuver
maneuver.forEach(function(man) {
let currManeuverPoint = new H.geo.Point(
man.position.latitude,
man.position.longitude
),
currDistance = currManeuverPoint.distance(testPosition);
if (currDistance < minDistance) {
minDistance = currDistance;
closestManeuver = man;
closestManeuverPoint = currManeuverPoint;
}
});
console.log('closest maneuver (%s m) is at: {lat: %s, lng: %s}: \n %s', Math.round(minDistance), closestManeuverPoint.lat, closestManeuverPoint.lng, closestManeuver.instruction);
Я создал простой jsfiddle пример, который показывает маршрут в Берлине и вычисляет ближайшую точку маневра (отображается как маркер) при каждом щелчке мыши. Проверьте журнал консоли для получения подробной информации о ближайшей точке маневра.