博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经纬度计算距离
阅读量:6824 次
发布时间:2019-06-26

本文共 2090 字,大约阅读时间需要 6 分钟。

@link http://www.cnblogs.com/ycsfwhh/archive/2010/12/20/1911232.html

@link http://blog.csdn.net/b_h_l/article/details/8657040

这里讲的很具体,说实话菜鸟没看到。

下面只是我用php抄的,自己做下笔记。

class LantitudeLongitudeDist{    const EARTH_RADIUS = 6378137;//赤道半径(单位m)    /**     * 转化为弧度(rad)     * */    private static function rad($d)    {       return (float)($d * pi() / 180.0);    }    /**     * 基于余弦定理求两经纬度距离     * @param lon1 第一点的经度     * @param lat1 第一点的纬度     * @param lon2 第二点的经度     * @param lat3 第二点的纬度     * @return 返回的距离,单位m     * */    public static function dist($lon1, $lat1, $lon2, $lat2) {        $radLat1 = self::rad($lat1);        $radLat2 = self::rad($lat2);        $radLon1 = self::rad($lon1);        $radLon2 = self::rad($lon2);        if ($radLat1 < 0)            $radLat1 = pi() / 2 + abs($radLat1);// south        if ($radLat1 > 0)            $radLat1 = pi() / 2 - abs($radLat1);// north        if ($radLon1 < 0)            $radLon1 = pi() * 2 - abs($radLon1);// west        if ($radLat2 < 0)            $radLat2 = pi() / 2 + abs($radLat2);// south        if ($radLat2 > 0)            $radLat2 = pi() / 2 - abs($radLat2);// north        if ($radLon2 < 0)            $radLon2 = pi() * 2 - abs($radLon2);// west        $x1 = self::EARTH_RADIUS * cos($radLon1) * sin($radLat1);        $y1 = self::EARTH_RADIUS * sin($radLon1) * sin($radLat1);        $z1 = self::EARTH_RADIUS * cos($radLat1);        $x2 = self::EARTH_RADIUS * cos($radLon2) * sin($radLat2);        $y2 = self::EARTH_RADIUS * sin($radLon2) * sin($radLat2);        $z2 = self::EARTH_RADIUS * cos($radLat2);        $d = sqrt(($x1 - $x2) * ($x1 - $x2) + ($y1 - $y2) * ($y1 - $y2)+ ($z1 - $z2) * ($z1 - $z2));        //余弦定理求夹角        $theta = acos((self::EARTH_RADIUS * self::EARTH_RADIUS + self::EARTH_RADIUS * self::EARTH_RADIUS - $d * $d) / (2 * self::EARTH_RADIUS * self::EARTH_RADIUS));        $dist = $theta * self::EARTH_RADIUS;        return $dist;    }}$r = LantitudeLongitudeDist::dist('116.4609990000', '39.9272240000', '116.4685450000', '39.9278320000');echo $r;exit();

  

转载于:https://www.cnblogs.com/iamdoufu/p/4709196.html

你可能感兴趣的文章
用js玩桌球游戏
查看>>
maven下运行jetty报错
查看>>
android 配置framework 使应用首选安装在SD卡
查看>>
h5 点击表单 顶部fixed 菜单栏 上移
查看>>
windows 2008 R2 64位系统杀毒软件
查看>>
我的友情链接
查看>>
netty学习笔记
查看>>
更改win7文件类型默认操作
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Webgoat 笔记总结 Web Services
查看>>
Linux Mysql安装部署
查看>>
多线程 概述
查看>>
Nagios达到阈值时发不出告警邮件问题总结
查看>>
互联网公司应该要有的技术人员配置和开发事项清单
查看>>
Android开发中如何改变RadioButton背景图片和文字的相对位置
查看>>
如何给Linux (Fedora Ubuntu等)安装字体
查看>>
MySQL大小写敏感问题和命名规范
查看>>
java 获取时间 和 转换时间
查看>>
Redis主从复制
查看>>