HarmonyOS 鸿蒙Next中根据经纬度计算两点间距离
HarmonyOS 鸿蒙Next中根据经纬度计算两点间距离
计算方法函数封装
注* LatLng为SDK中引用类型,可自行定义接口类型
import { LatLng } from "@bdmap/base"
distanceByTwoPoints(location1: LatLng, location2: LatLng) {
let x1 = location1.lat
let y1 = location1.lng
let x2 = location2.lat
let y2 = location2.lng
let Lat1 = this.rad(x1); // 纬度
let Lat2 = this.rad(x2);
let a = Lat1 - Lat2; // 两点纬度之差
let b = this.rad(y1) - this.rad(y2); // 经度之差
let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+ Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(b / 2), 2)));
// 计算两点距离的公式
s = s * 6378137.0; // 弧长等于弧度乘地球半径(半径为米)
s = Math.round(s * 10000) / 10000; // 精确距离的数值
return s;
}
rad(d: number) {
return d * Math.PI / 180.0
}
更多关于HarmonyOS 鸿蒙Next中根据经纬度计算两点间距离的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中计算两点间距离,可使用ohos.geo
模块的Location
类和LocationUtils
工具类。具体步骤如下:
- 创建两个
Location
对象,分别设置经纬度:
let location1 = new geo.Location(lat1, lon1);
let location2 = new geo.Location(lat2, lon2);
- 调用
LocationUtils.getDistance
方法计算距离:
let distance = geo.LocationUtils.getDistance(location1, location2);
该方法返回两点间距离,单位为米。注意经纬度参数需使用WGS84坐标系。
更多关于HarmonyOS 鸿蒙Next中根据经纬度计算两点间距离的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中计算两点间距离的实现是正确的,使用了Haversine公式来计算球面距离。这里有几个关键点说明:
-
代码中使用了标准的Haversine公式实现,这是计算地球表面两点间距离的常用方法。
-
地球半径使用了WGS84标准的6378137米,这是GPS系统采用的参考椭球体长半径。
-
代码结构清晰,将角度转弧度的计算封装成rad()方法,提高了代码复用性。
-
最终结果精确到小数点后4位,并进行了四舍五入处理,这对大多数地理计算场景已经足够。
-
注意LatLng类型需要确保包含lat(纬度)和lng(经度)属性。
这个实现可以直接在HarmonyOS应用中使用,计算结果单位为米。如果需要更高精度或考虑地球扁率,可以考虑使用Vincenty公式等其他算法。