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