首页 > 数据库 > mysql教程 > 如何使用纬度和经度查找半径内的点?

如何使用纬度和经度查找半径内的点?

Susan Sarandon
发布: 2024-10-28 03:21:02
原创
258 人浏览过

How to Find Points Within a Radius Using Latitude and Longitude?

确定给定纬度和经度的半径内的邻近度

设想一个场景,其中表单允许用户输入经度和纬度。同时,数据库包含一个表格,其中包含地理坐标的完整列表。当前的任务涉及识别用户坐标 15 英里半径内的任何点。

解决方案:

为了实现这一目标,我们利用距离计算的概念使用特定公式在两点之间进行计算:

function get_distance($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));
}
登录后复制

或者,可以利用数据库查询:

$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.";
登录后复制

以上是如何使用纬度和经度查找半径内的点?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板