mysql按经纬度距离排序

//距离公里数限制
$km = 100;
//$lat $lng 用户当前经纬度
//lat lat 用户表数据库经纬度字段
$distance = "ACOS(SIN(( $lat * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) +COS(( $lat* 3.1415) / 180 ) * COS((lat * 3.1415) / 180 ) *COS(( $lng* 3.1415) / 180 - (lng * 3.1415) / 180 ) ) * 6380";
//只查询当前经纬度距离100公里内的用户
$where_km = $distance . " < " . $km;
//按近距离排序
$order    = 'level desc,' . $distance . ' asc';
$userList = M_User::where($where_km)
    //计算出距离(distance)
    ->field('name,lat,lng,' . $distance . ' as distance')
    ->order($order)
    ->select();

Pasa吴技术博客
请先登录后发表评论
  • latest comments
  • 总共0条评论