经纬度计算两地距离
根据经纬度计算出两地之间的距离,两种,一种是在数据库查询语句,一种是PHP计算
1、SQL语句(PS:a小o大)
ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(('.用户位置lat.'* PI() / 180 - 数据库lat字段 * PI() / 180) / 2),2) + COS('.用户位置lat.' * PI() / 180) * COS(数据库lat字段 * PI() / 180) * POW(SIN(('.用户位置lon.' * PI() / 180 - 数据库lon字段 * PI() / 180) / 2),2))) * 1000) AS distance2、PHP计算
function getDistance($lat1, $lng1, $lat2, $lng2){
//将角度转为狐度
$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;
$res = round($s*1000);
if($res < 1000){
return $res . 'm';
}else{
return round($res/1000,2) . 'km';
}
}