mysql根据经纬度计算距离并排序,php根据经纬度计算距离

根据经纬度计算距离

  1.   
  2.     /** 
  3.      * 根据两点间经纬度坐标,计算两点间距离,单位:千米 

  4.      * @param lng1 
  5.      * @param lat1 
  6.      * @param lng2
  7.    * @param lat2
  8.      */  
  9. 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 $s;  

 

sql   查询

  1. SELECT  
  2.     es_name,  
  3.     es_lon,  
  4.     es_lat,  
  5.     ROUND(  
  6.         6378.138 * 2 * ASIN(  
  7.             SQRT(  
  8.                 POW(  
  9.                     SIN(  
  10.                         (  
  11.                             30.611842 * PI() / 180 - es_lat * PI() / 180  
  12.                         ) / 2  
  13.                     ),  
  14.                     2  
  15.                 ) + COS(30.611842 * PI() / 180) * COS(es_lat * PI() / 180) * POW(  
  16.                     SIN(  
  17.                         (  
  18.                             104.074666 * PI() / 180 - es_lon * PI() / 180  
  19.                         ) / 2  
  20.                     ),  
  21.                     2  
  22.                 )  
  23.             )  
  24.         ) * 1000  
  25.     ) AS distance_um  
  26. FROM  
  27.     c_ershuai  
  28. ORDER BY  
  29.     distance_um ASC  

 

猜你喜欢

转载自blog.csdn.net/fanblog/article/details/79766141