PHP,Mysql根据经纬度计算距离并排序

匿名 (未验证) 提交于 2019-12-02 21:59:42

计算公式:

mysql:
//Lng1表示A点纬度和经度,Lat2 Lng2 表示B点纬度和经度 //a Lng2 为两点经度之差 //6378.137为地球半径,单位为公里 //计算出来的结果单位为公里    select *,(2 * 6378.137* ASIN(SQRT(POW(SIN(PI()*(111.86141967773438-lng)/360),2)+COS(PI()*33.07078170776367/180)* COS(lat * PI()/180)*POW(SIN(PI()*(33.07078170776367-lat)/360),2)))) as juli from `area`  order by juli asc limit 0,20

function GetDistance($lng1,$lat1,$lng2,$lat2){         //将角度转为狐度         $radLat1=deg2rad($lat1);//deg2rad()函数将角度转换为弧度         $radLat2=deg2rad($lat2);         $radLng1=deg2rad($lng1);         $radLng2=deg2rad($lng2);         $a=$radLat1-$radLat2;         $b=$radLng1-$radLng2;         $s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))*6378.137*1000;//计算出来的结果单位为米
return floor($s); }

原文:https://www.cnblogs.com/wrld/p/9377680.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!