Найти длину (миль или км) полилинии, используя здесь карты javascript - PullRequest
0 голосов
/ 03 февраля 2019

У меня много полилиний из KmlGroup.Я хотел бы иметь возможность отображать длину каждой полилинии.Похоже, что h.Map.Polyline.getBounds () не имеет опции для возврата длины строки.У кого-нибудь есть предложения о том, как я могу получить эти данные?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы можете сделать это вручную.Получить геометрию из линии ( H.map.Polyline # getGeometry ), затем пройтись по точкам и вычислить расстояние между ними.Что-то вроде:

function getPolylineLength(polyline) {
  const geometry = polyline.getGeometry();
  let distance = 0;
  let last = geometry.extractPoint(0);
  for (let i=1; i < geometry.getPointCount(); i++) {
    const point = geometry.extractPoint(i);
    distance += last.distance(point);
    last = point;
  }
  if (polyline.isClosed()) {
    distance += last.distance(geometry.extractPoint(0));
  }
  
  // distance in meters
  return distance;
}
0 голосов
/ 04 февраля 2019

Вы не можете напрямую получить длину полилинии.Длина полилинии - это не что иное, как расстояние между двумя координатами.Этого вы можете добиться, используя Routing API и находя расстояние.

Получите точки широты и длины вашей полилинии, используя метод getGoemetry (). GetLatLngAltArray (пример: map.getObjects () [0] .getGeometry () .getLatLngAltArray ()).Передайте это параметру маршрутной точки API и получите расстояние.Надеюсь, это поможет!

https://route.api.here.com/routing/7.2/calculateroute.json?waypoint0=52.5160%2C13.3779&waypoint1=52.5206%2C13.3862&mode=fastest%3Bcar%3Btraffic%3Aenabled&app_id=devportal-demo-20180625&app_code=9v2BkviRwi9Ot26kp2IysQ&departure=now
...