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 中的一些经验积累
Oct 09 PHP
虚拟主机中对PHP的特殊设置
Oct 09 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
php 获得汉字拼音首字母的函数
Aug 01 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
了解PHP的返回引用和局部静态变量
Jun 04 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
PHP读书笔记_运算符详解
Jul 01 PHP
PHP经典算法集锦【经典收藏】
Sep 14 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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安全配置方法
2007/06/16 PHP
php中的观察者模式
2010/03/24 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
python求众数问题实例
2014/09/26 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
幼师自荐信范文
2013/10/06 职场文书
商务英语专业毕业生自荐信
2013/11/05 职场文书
校园门卫岗位职责
2013/12/09 职场文书
业绩考核岗位职责
2014/02/01 职场文书
优秀教师主要事迹
2014/02/01 职场文书
安全保证书范文
2014/04/29 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python