PHP计算百度地图两个GPS坐标之间距离的方法


Posted in PHP onJanuary 09, 2015

本文实例讲述了PHP计算百度地图两个GPS坐标之间距离的方法。分享给大家供大家参考。

具体实现方法如下:

/**

 * 计算两个坐标之间的距离(米)

 * @param float $fP1Lat 起点(纬度)

 * @param float $fP1Lon 起点(经度)

 * @param float $fP2Lat 终点(纬度)

 * @param float $fP2Lon 终点(经度)

 * @return int

 */

function distanceBetween($fP1Lat, $fP1Lon, $fP2Lat, $fP2Lon){

    $fEARTH_RADIUS = 6378137;

    //角度换算成弧度

    $fRadLon1 = deg2rad($fP1Lon);

    $fRadLon2 = deg2rad($fP2Lon);

    $fRadLat1 = deg2rad($fP1Lat);

    $fRadLat2 = deg2rad($fP2Lat);

    //计算经纬度的差值

    $fD1 = abs($fRadLat1 - $fRadLat2);

    $fD2 = abs($fRadLon1 - $fRadLon2);

    //距离计算

    $fP = pow(sin($fD1/2), 2) +

          cos($fRadLat1) * cos($fRadLat2) * pow(sin($fD2/2), 2);

    return intval($fEARTH_RADIUS * 2 * asin(sqrt($fP)) + 0.5);

}

/**

 * 百度坐标系转换成标准GPS坐系

 * @param float $lnglat 坐标(如:106.426, 29.553404)

 * @return string 转换后的标准GPS值:

 */

function BD09LLtoWGS84($fLng, $fLat){ // 经度,纬度

    $lnglat = explode(',', $lnglat);

    list($x,$y) = $lnglat;

    $Baidu_Server = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x={$x}&y={$y}";

    $result = @file_get_contents($Baidu_Server);

    $json = json_decode($result);

    if($json->error == 0){

        $bx = base64_decode($json->x);

        $by = base64_decode($json->y);

        $GPS_x = 2 * $x - $bx;

        $GPS_y = 2 * $y - $by;

        return $GPS_x.','.$GPS_y;//经度,纬度

    }else

        return $lnglat;

}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP 字符串 小常识
Jun 05 PHP
php中取得URL的根域名的代码
Mar 23 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
PHP创建桌面快捷方式的实例代码
Feb 17 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
Mar 18 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
PHP开发之用微信远程遥控服务器
Jan 25 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
Jun 03 PHP
php实现按照权重随机排序数据的方法
Jan 09 #PHP
PHP实现采集抓取淘宝网单个商品信息
Jan 08 #PHP
linux中cd命令使用详解
Jan 08 #PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 #PHP
网站防止被刷票的一些思路与方法
Jan 08 #PHP
分享常见的几种页面静态化的方法
Jan 08 #PHP
php的ddos攻击解决方法
Jan 08 #PHP
You might like
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
PHP exif扩展方法开启详解
2014/07/28 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
python中黄金分割法实现方法
2015/05/06 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
python如何控制进程或者线程的个数
2020/10/16 Python
python实现登录与注册系统
2020/11/30 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
客服服务心得体会
2013/12/30 职场文书
教师节促销活动方案
2014/02/14 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
告知书格式
2015/07/01 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
Golang中channel的原理解读(推荐)
2021/10/16 Golang
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技