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 array_flip() 删除数组重复元素
Jan 14 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
php检测useragent版本示例
Mar 24 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
php图片的二进制转换实现方法
Dec 15 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 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
操作Oracle的php类
2006/10/09 PHP
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
JS前端加密算法示例
2016/12/22 Javascript
js+html制作简单验证码
2017/02/16 Javascript
原生js实现放大镜
2017/02/20 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
python optparse模块使用实例
2015/04/09 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
学子宴答谢词
2014/01/25 职场文书
新学期决心书
2014/03/11 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
2015年统战工作总结
2015/05/19 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
比较node.js和Deno
2021/04/27 Javascript
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript