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记录日志的实现代码
Aug 08 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 PHP
php ctype函数中文翻译和示例
Mar 21 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 PHP
Joomla开启SEF的方法
May 04 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
浅谈laravel中的关联查询with的问题
Oct 10 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
php实现的css文件背景图片下载器代码
2014/11/11 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
JS实现图片手风琴效果
2020/04/17 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
分享15个最受欢迎的Python开源框架
2014/07/13 Python
Python and、or以及and-or语法总结
2015/04/14 Python
Python模块文件结构代码详解
2018/02/03 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
集体生日活动方案
2014/08/18 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
升学宴家长致辞
2015/07/27 职场文书
开学典礼校长致辞
2015/07/29 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
Vue接口封装的完整步骤记录
2021/05/14 Vue.js