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写的求多项式导数的函数代码
Jul 04 PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 PHP
php set_time_limit()函数的使用详解
Jun 05 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
php中通过数组进行高效随机抽取指定条记录的算法
Sep 09 PHP
php中session定期自动清理的方法
Nov 12 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
php轻松实现文件上传功能
Mar 03 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
YII2 实现多语言配置的方法分享
Jan 11 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 PHP
PHP获取数组中指定的一列实例
Dec 27 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 分页类 扩展代码
2009/06/11 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
PHP实现文件下载详解
2014/11/27 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
python字符串排序方法
2014/08/29 Python
Python中统计函数运行耗时的方法
2015/05/05 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
幼儿园大班新学期寄语
2014/01/18 职场文书
大学校庆策划书
2014/01/31 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
统计工作个人总结
2015/03/03 职场文书
小学安全教育主题班会
2015/08/12 职场文书
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL