最近我需要寻找接近我职位的所有人。我的位置被外围细微处理。例如我周围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公里的距离搜索我周围.. ..是的一点点很难用书面解释。
基本上,示意性地,一个人将拥有我的圆圈和满满的圆圈(其他人),我必须找到那些圆圈在我身边的人。 (是的,这是母亲的解释)
提前致谢!