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 相关文章推荐
ie6 动态缩略图不显示的原因
Jun 21 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
php操作JSON格式数据的实现代码
Dec 24 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
PHP5.3安装Zend Guard Loader图文教程
Sep 29 PHP
PHP中使用Imagick实现各种图片效果实例
Jan 21 PHP
php反射类ReflectionClass用法分析
May 12 PHP
使用Yii2实现主从数据库设置
Nov 20 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 PHP
php实现的三个常用加密解密功能函数示例
Nov 06 PHP
解决laravel 表单提交-POST 异常的问题
Oct 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
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
PyMongo安装使用笔记
2015/04/27 Python
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
python画图常规设置方式
2020/03/05 Python
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
体现团队精神的口号
2014/06/06 职场文书
甜品店创业计划书
2014/09/21 职场文书
民事赔偿协议书
2014/11/02 职场文书
经验交流材料格式
2014/12/30 职场文书
法律意见书范本
2015/06/04 职场文书
Python实现批量自动整理文件
2022/03/16 Python