js计算地球(地图)上两点的直线距离

//计算两点位置距离
  getDistance: function (lat1, lng1, lat2, lng2) {
    lat1 = lat1 || 0;
    lng1 = lng1 || 0;
    lat2 = lat2 || 0;
    lng2 = lng2 || 0;
 
    var rad1 = lat1 * Math.PI / 180.0;
    var rad2 = lat2 * Math.PI / 180.0;
    var a = rad1 - rad2;
    var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
 
    var r = 6378137;
    var distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)));
 
    /*if (distance > 1000){
      distance = Math.round(distance / 1000);
    }*/
 
    return distance;
  }
View Code
 
var distance  = getDistance(31.11325, 121.38206, 39.98406, 116.30752);
 
console.log( distance );(单位 米)
 
自己去打印看看吧,备注:传值是两个点的经纬度 

转载于:https://www.cnblogs.com/lijuntao/p/10064765.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算地球两点之间距离,我们可以使用经纬度坐标来进行计算。在JavaScript中,可以使用Haversine公式来计算地球两点之间距离。 Haversine公式如下: d = 2r * arcsin(√sin²((Δlat)/2) + cos(lat1) * cos(lat2) * sin²((Δlon)/2)) 其中,d代表地球两点之间距离,r代表地球的平均半径(通常为6371公里),lat1和lat2分别为两点的纬度,lon1和lon2分别为两点的经度。 因此,可以通过编写以下的JavaScript函数来计算地球两点距离: ```javascript function calculateDistance(lat1, lon1, lat2, lon2) { const r = 6371; //地球的平均半径,单位公里 const dLat = toRadians(lat2 - lat1); const dLon = toRadians(lon2 - lon1); const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2); const c = 2 * Math.asin(Math.sqrt(a)); const distance = r * c; //地球两点间的直线距离,单位公里 return distance; } function toRadians(degrees) { return degrees * (Math.PI / 180); } // 测试计算距离 const distance = calculateDistance(39.9, 116.4, 31.2, 121.4); console.log(distance); // 输出406.6,单位公里 ``` 通过将两点的经纬度作为参数传递给`calculateDistance`函数,可以得到地球两点之间直线距离。这个函数先将经纬度转换为弧度,然后根据Haversine公式进行计算,最后返回距离结果。测试结果表明,北京(39.9°N, 116.4°E)和上海(31.2°N, 121.4°E)之间距离为406.6公里。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值