PHP,Mysql根據經緯度計算距離並排序
阿新 • • 發佈:2018-07-27
size floor class style sql png com nbsp div
計算公式:
mysql:
//Lng1表示A點緯度和經度,Lat2 Lng2 表示B點緯度和經度 //a = Lat1 – Lat2為兩點緯度之差 b = Lng1 -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)))) asjuli from `area` order by juli asc limit 0,20
php:
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); }
PHP,Mysql根據經緯度計算距離並排序