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

2 回复

在HarmonyOS鸿蒙Next中计算两点间距离,可使用ohos.geo模块的Location类和LocationUtils工具类。具体步骤如下:

  1. 创建两个Location对象,分别设置经纬度:
let location1 = new geo.Location(lat1, lon1);
let location2 = new geo.Location(lat2, lon2);
  1. 调用LocationUtils.getDistance方法计算距离:
let distance = geo.LocationUtils.getDistance(location1, location2);

该方法返回两点间距离,单位为米。注意经纬度参数需使用WGS84坐标系。

更多关于HarmonyOS 鸿蒙Next中根据经纬度计算两点间距离的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中计算两点间距离的实现是正确的,使用了Haversine公式来计算球面距离。这里有几个关键点说明:

  1. 代码中使用了标准的Haversine公式实现,这是计算地球表面两点间距离的常用方法。

  2. 地球半径使用了WGS84标准的6378137米,这是GPS系统采用的参考椭球体长半径。

  3. 代码结构清晰,将角度转弧度的计算封装成rad()方法,提高了代码复用性。

  4. 最终结果精确到小数点后4位,并进行了四舍五入处理,这对大多数地理计算场景已经足够。

  5. 注意LatLng类型需要确保包含lat(纬度)和lng(经度)属性。

这个实现可以直接在HarmonyOS应用中使用,计算结果单位为米。如果需要更高精度或考虑地球扁率,可以考虑使用Vincenty公式等其他算法。

回到顶部