3***@qq.com
3***@qq.com
  • 发布:2020-08-30 01:30
  • 更新:2023-08-01 16:30
  • 阅读:7378

uni-app 经纬度坐标距离计算

分类:uni-app

js版本:

distance(la1, lo1, la2, lo2) {  
            var La1 = la1 * Math.PI / 180.0;  
            var La2 = la2 * Math.PI / 180.0;  
            var La3 = La1 - La2;  
            var Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0;  
            var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2)   Math.cos(La1) * Math.cos(La2) * Math.pow(Math.sin(Lb3 / 2), 2)));  
            s = s * 6378.137;//地球半径  
            s = Math.round(s * 10000) / 10000;  
            console.log("计算结果",s,'KM');   
        }

写php接口时,可以用下面的方法来计算距离。

php版本:

/**  
 * 计算两点之间直线距离  
 * @param float $lon1    经度  
 * @param float $lat1    维度  
 * @param float $lon2    经度  
 * @param float $lat2    维度  
 * @return float         浮点数  
 */  
function distance($lon1, $lat1, $lon2, $lat2){  
    return (2*ATAN2(SQRT(SIN(($lat1-$lat2)*PI()/180/2)  
            *SIN(($lat1-$lat2)*PI()/180/2)   
            COS($lat2*PI()/180)*COS($lat1*PI()/180)  
            *SIN(($lon1-$lon2)*PI()/180/2)  
            *SIN(($lon1-$lon2)*PI()/180/2)),  
            SQRT(1-SIN(($lat1-$lat2)*PI()/180/2)  
                    *SIN(($lat1-$lat2)*PI()/180/2)  
                     COS($lat2*PI()/180)*COS($lat1*PI()/180)  
                    *SIN(($lon1-$lon2)*PI()/180/2)  
                    *SIN(($lon1-$lon2)*PI()/180/2))))*6378140;  
}  
echo distance(116.3896,39.91917,116.3940,39.91726);
1 关注 分享
1***@qq.com

要回复文章请先登录注册

2***@qq.com

2***@qq.com

uniapp的代码报错了
2023-08-01 16:30
李好坏

李好坏

我用这个算法,本来只有2km结果算出来有 6000多KM
2023-02-14 23:39
1***@qq.com

1***@qq.com

你这算的不准确
2023-02-14 16:53
2***@qq.com

2***@qq.com

js,那里少个+号
2021-04-01 10:51