PHP 实现根据经纬度计算距离(已验证)

2016-01-11 14:32:00 +08:00
 mofeiwo

在网上学习了根据经纬度计算距离的代码,很多的例子。特整理一份并且已经验证。

/**
     * 根据两点间的经纬度计算距离
     * @param $lng1
     * @param $lat1
     * @param $lng2
     * @param $lat2
     * @return int
     */
    public static function getDistance($lng1, $lat1, $lng2, $lat2)
    {
        //将角度转为狐度
        $radLat1 = deg2rad($lat1);//deg2rad()函数将角度转换为弧度
        $radLat2 = deg2rad($lat2);
        $radLng1 = deg2rad($lng1);
        $radLng2 = deg2rad($lng2);
        $a = $radLat1 - $radLat2;
        $b = $radLng1 - $radLng2;
        $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137 * 1000;
        return $s;
    }

PS :
1 、返回的结果单位 m 。
2 、测试 Google 地图经纬度和百度地图经纬度差 1m 左右。

详情地址: http://blog.mofeiwo.com/?p=408

欢迎指导。

6329 次点击
所在节点    分享发现
21 条回复
mofeiwo
2016-01-12 14:54:55 +08:00
@NCE 接触到场景有限。百度地图在 GCJ02 协议的基础上又做了一次处理,变为 BD09 协议的坐标。与 Google 坐标有差异。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/249882

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX