我在数据库中有场地,我用它们的纬度和经度存储。
我也有登录用户的纬度和经度。
我正在开发一种功能,可以让他们在任何给定的测量范围内找到场地,比如 20 英里。
是否可以找到距离用户的经纬度 20 英里的最外面的经纬度,然后以某种方式编写查询以在 MySQL 的距离圈内查找场地?
谢谢。
我使用它(从 javascript 移植到 Objective-C) - 很多很棒的位置方程用 javascript http://www.movable-type.co.uk/scripts/latlong.html表示
我找到了一个有效的 PHP 函数:
function getDistanceBetweenPoints($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') {
$theta = $longitude1 - $longitude2;
$distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
$distance = acos($distance);
$distance = rad2deg($distance);
$distance = $distance * 60 * 1.1515; switch($unit) {
case 'Mi': break; case 'Km' : $distance = $distance * 1.609344;
}
return (round($distance,2));
}
认为这可能对其他人有所帮助。