欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计算两个经纬度的距离

程序员文章站 2024-02-14 22:59:28
...
 

//计算距离

Rad: function(d) {
    return d * Math.PI / 180.0; //经纬度转换成三角函数中度分表形式。
},

//计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度

GetDistance: function(lat1, lng1, lat2, lng2) {
      var radLat1 = this.Rad(Number(lat1));
      var radLat2 = this.Rad(Number(lat2));
      var a = radLat1 - radLat2;
      var b = this.Rad(Number(lng1)) - this.Rad(Number(lng2));
      var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
        Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
      s = s * 6378.137; // EARTH_RADIUS;
      s = Math.round(s * 10000) / 10000; //输出为公里
      //s=s.toFixed(4);
      s = s > 1 ? s.toFixed(2) + 'km' : (s * 1000).toFixed(2) + 'm'
      return s;
},

// 通过forEach获取商品经纬度,且放在数组中

allArr.forEach(item => {
    item.longitudeAndlat = that.GetDistance(myLaca[0], myLaca[1], laca[0], laca[1]);
});

通过 forEach 进行对 allArr 进行遍历,调用 GetDistance 方法,赋值到 longitudeAndlat 中