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及Zend Engine的线程安全模型分析
Nov 10 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
PHP实现通过正则表达式替换回调的内容标签
Jun 15 PHP
详解Window7 下开发php扩展
Dec 31 PHP
详解php中 === 的使用
Oct 24 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
Oct 18 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 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
Zend Guard一些常见问题解答
2008/09/11 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
python实现倒计时的示例
2014/02/14 Python
Python生成器(Generator)详解
2015/04/13 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
python生成lmdb格式的文件实例
2018/11/08 Python
详解Python3中ceil()函数用法
2019/02/19 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
python实现四人制扑克牌游戏
2020/04/22 Python
Python执行时间的几种计算方法
2020/07/31 Python
Python实现像awk一样分割字符串
2020/09/15 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
物理教育专业毕业生推荐信
2013/11/03 职场文书
应届生自我鉴定
2013/12/11 职场文书
校庆活动方案
2014/03/31 职场文书
经营管理策划方案
2014/05/22 职场文书
2014年中秋寄语
2014/08/11 职场文书
教师四风问题整改措施
2014/09/25 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android