根据经纬度计算出两地之间的距离,两种,一种是在数据库查询语句,一种是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 distance

2、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';
        }

    }

标签: none

添加新评论