PHP MySQL从GPS获取半径用户位置的位置

Dac*_*hmt 5 php mysql location coordinates

例如,我在我的数据库中发生汽车事故.这些事件具有纬度和经度.在使用GPS的手机上,我用坐标获取用户的位置.如果他周围有事件,用户可以选择他想知道的半径.所以我想说他想知道身边2英里的事件.

所以我从手机发送用户的纬度,经度和他选择的半径到网络服务.我需要进行SQL查询以获取用户周围2英里的事件.

你知道怎么做吗?

Tal*_*tia 2

function distance($lat1,$lon1,$lat2,$lon2,$unit)
  {
  $theta=$lon1-$lon2;
  $dist=sin(deg2rad($lat1))*sin(deg2rad($lat2))+cos(deg2rad($lat1))*cos(deg2rad($lat2))*cos(deg2rad($theta));
  $dist=acos($dist);
  $dist=rad2deg($dist);
  $miles=$dist*60*1.1515;
  $unit=strtoupper($unit);
  if ($unit=="K")
    {
    return ($miles*1.609344);
    }
    else if ($unit=="N")
    {
    return ($miles*0.8684);
    }
    else
    {
    return $miles;
    }
  } // end function

$x_lat=center_of_serach;
$x_lon=center_of_serach;
$_distance=some_distance_in_miles;
$query1 = "SELECT * FROM `location_table` WHERE somefield=somefilter";
$result=mysql_db_query($db_conn, $query1);
$max_rows=mysql_num_rows($result); 
if ($max_rows>0)
  {
while ( $data1=mysql_fetch_assoc($result) )
  {
  if ( distance($x_lat,$x_lon,$data1['lat'],$data1['lng'],'m')<$_distance )
    {
    //do stuff
    }
  }
Run Code Online (Sandbox Code Playgroud)

如果您的数据库不太大,则获取所有数据并通过函数运行它比使用查询更快。

它也适用于公斤和海里。;)