ЗДЕСЬ Карты для Javascript API: рассчитать маневр ближайшего маршрута к текущей географической позиции - PullRequest
1 голос
/ 27 февраля 2020

Я использую HERE Maps JS API. Я могу запросить маршрут на основе начальной и конечной позиции. Теперь маршрут показывает все маневры в одном ответе, как массив, как показано на рисунке ниже. Как я могу определить, какой маневр выбрать, основываясь на широте и долготе текущей позиции? enter image description here

1 Ответ

1 голос
/ 28 февраля 2020

Вы должны 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 пример, который показывает маршрут в Берлине и вычисляет ближайшую точку маневра (отображается как маркер) при каждом щелчке мыши. Проверьте журнал консоли для получения подробной информации о ближайшей точке маневра.

...