发布于 5年前
PHP 如何根据经纬度查找附近的人
根据经纬度和范围换算出所在点正方形4个点的经纬度
/**
* @param $lng 经度
* @param $lat 纬度
* @param $distance 范围(千米)
* @return array
*/
function getNearPerson($lng, $lat, $distance){
define('EARTH_RADIUS', 6371);//地球半径
$dlng = 2 * asin(sin($distance / (2 * EARTH_RADIUS)) / cos(deg2rad($lat)));
$dlng = rad2deg($dlng);
$dlat = $distance/EARTH_RADIUS;
$dlat = rad2deg($dlat);
$squares = array(
'left-top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng),
'right-top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng),
'left-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng),
'right-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng)
);
return $squares;
}
sql语句
select * from yt_collection_order where lng<>0
and lat>{$squares['right-bottom']['lat']}
and lat<{$squares['left-top']['lat']}
and lng>{$squares['left-top']['lng']}
and lng<{$squares['right-bottom']['lng']}