В последнее время мне нужно было искать всех близких мне людей. Моя позиция была отточена по периметру. Например, все люди в 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 км … Да, немного сложно объяснить на письме.
По сути, схематически у одного будет мой круг, полный кругов (у других людей), и необходимо, чтобы я нашел людей, чей круг проходит у меня. (да это материнское объяснение)
Заранее спасибо !
Задача ещё не решена.
Других решений пока нет …