使用此处地图javascript查找折线的长度(英里或公里)

时间:2019-02-03 15:43:47

标签: here-api

我有许多来自KmlGroup的折线。我希望能够显示每条折线的长度。看起来h.Map.Polyline.getBounds()没有用于返回行长的选项。有人对我如何获得这些数据有建议吗?

2 个答案:

答案 0 :(得分:1)

您不能直接获取折线的长度。折线的长度不过是两个坐标之间的距离。您可以通过使用Routing API并找到距离来实现。

使用getGoemetry()。getLatLngAltArray方法(例如:map.getObjects()[0] .getGeometry()。getLatLngAltArray())检索折线的纬度,经度点。将此传递给routing 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

答案 1 :(得分:1)

您可以手动执行。从直线(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;
}