Вычисление расстояний по широте и долготе
В этом сценарии вы хотите определить точки в радиусе 15 миль от координаты, вводимые пользователем. Для этого вы можете использовать математические формулы для расчета расстояний.
Рассмотрим следующую функцию PHP:
function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') {
// Calculate the angle difference
$theta = $longitude1 - $longitude2;
// Calculate the distance
$distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2)))
(cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) *
cos(deg2rad($theta)));
// Convert to degrees
$distance = acos($distance);
$distance = rad2deg($distance);
// Convert to miles or kilometers
$distance = $distance * 60 * 1.1515;
// Round the distance
return (round($distance,2));
}
В качестве альтернативы для этого можно использовать запрос к базе данных:
$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) *
sin((`Latitude`*pi()/180)) cos((".$latitude."*pi()/180)) *
cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)*
pi()/180))))*180/pi())*60*1.1515
) as distance
FROM `MyTable`
HAVING distance > ".$distance.";
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3