根据另一个周长在周边搜索

时间:2018-04-19 09:45:59

标签: php sql geolocation radius

最近我需要寻找接近我职位的所有人。我的位置被外围细微处理。例如我周围5公里的所有人。

对于这个:没问题,经过一些研究和各种修改,我有了这个功能。

这是当前功能完美

$lat = $latMe; // My latitude
$lon = $lonMe; // My longitude
$rad = $distancePeople; // My perimeter like 10km

$R = 6371; // Earth rayon

$maxLat = $lat + rad2deg($rad/$R);
$minLat = $lat - rad2deg($rad/$R);
$maxlon = $lon + rad2deg(asin($rad/$R) / cos(deg2rad($lat)));
$minlon = $lon - rad2deg(asin($rad/$R) / cos(deg2rad($lat)));

$sql = "SELECT *, acos(sin(:lat)*sin(radians(lati)) + cos(:lat)*cos(radians(lati))*cos(radians(longi)-:lon)) * :R As D
        FROM ( SELECT * FROM people WHERE lati Between :minLat And :maxLat And longi Between :minlon And :maxlon ) As FirstCut
        WHERE acos(sin(:lat)*sin(radians(lati)) + cos(:lat)*cos(radians(lati))*cos(radians(longi)-:lon)) * :R < :rad ORDER by date";

$params = [
    'lat'    => deg2rad($lat),
    'lon'    => deg2rad($lon),
    'minLat' => $minLat,
    'minlon' => $minlon,
    'maxLat' => $maxLat,
    'maxlon' => $maxlon,
    'rad'    => $rad,
    'R'      => $R,
];

今天我需要更复杂,我找不到...(在PHP中

我需要在特定区域内找到我自己规定“可用性”范围的人。

例如我说我可以从我的位置移动到10公里左右,人们说同样的事情,所以我需要在10公里半径范围内以10公里的距离搜索我周围.. ..是的一点点很难用书面解释。

基本上,示意性地,一个人将拥有我的圆圈和满满的圆圈(其他人),我必须找到那些圆圈在我身边的人。 (是的,这是母亲的解释)

提前致谢!

How it have to work - In green the good section, two people selectionned

0 个答案:

没有答案