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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
一个捕获函数输出的函数
Feb 14 PHP
真正的ZIP文件操作类(php)
Jul 21 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
php绘图中显示不出图片的原因及解决
Mar 05 PHP
php中使用sftp教程
Mar 30 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 PHP
PHP实现的折半查询算法示例
Oct 09 PHP
php服务器的系统详解
Oct 12 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
建立动态的WML站点(一)
2006/10/09 PHP
php include和require的区别深入解析
2013/06/17 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
three.js实现圆柱体
2018/12/30 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
python新手经常遇到的17个错误分析
2014/07/30 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
python实现邮件自动发送
2019/08/10 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
python 绘制场景热力图的示例
2020/09/23 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
党校培训思想汇报
2014/01/03 职场文书
倡导文明标语
2014/06/16 职场文书
安全目标管理责任书
2014/07/25 职场文书
2014年业务工作总结
2014/11/17 职场文书
2015年售票员工作总结
2015/04/29 职场文书
交通事故被告代理词
2015/05/23 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
详解Python类和对象内容
2021/06/22 Python
Golang 结构体数据集合
2022/04/22 Golang