发布于 4年前

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']}
PHP
©2020 edoou.com   京ICP备16001874号-3