根据经纬度计算距离
/** * 根据两点间经纬度坐标,计算两点间距离,单位:千米* @param lng1 * @param lat1 * @param lng2 * @param lat2
*/ 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 查询
SELECT es_name, es_lon, es_lat, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( 30.611842 * PI() / 180 - es_lat * PI() / 180 ) / 2 ), 2 ) + COS(30.611842 * PI() / 180) * COS(es_lat * PI() / 180) * POW( SIN( ( 104.074666 * PI() / 180 - es_lon * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance_um FROM c_ershuai ORDER BY distance_um ASC