/**

 * 计算两个坐标之间的距离(米)

 * @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百度地图开发之距离计算的实例分享的更多相关文章

  1. C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息

    原文:C#的百度地图开发(三)依据坐标获取位置.商圈及周边信息 我们得到了百度坐标,现在依据这一坐标来获取相应的信息.下面是相应的代码 public class BaiduMap { /// < ...

  2. android 百度地图开发实例(转载)

    因为在我的寝室google基站定位返回的数据总是为空,所以换成百度地图,发现百度地图开发起来非常方便,提供了许多有用的工具,地图的加载速度也比google地图快许多. 为了加强记忆,写一点androi ...

  3. Android studio 百度地图开发(3)地图导航

    Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...

  4. Android studio 百度地图开发(2)地图定位

    Android studio 百度地图开发(2)地图定位 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...

  5. Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

      标签: Android百度地图API Key  分类: Android 百度地图开发(2)    最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...

  6. Android 百度地图开发之一(Hello BaiDu Map)

    之前也接触过百度地图的开发,但那是在网上找的案例或代码,而且是比较老的版本.打算重新学习一下百度地图的开发. 本次使用的百度地图的版本是 Android SDK v3.0.0 本篇文章主要讲述百度地图 ...

  7. C#的百度地图开发(四)前端显示与定位

    原文:C#的百度地图开发(四)前端显示与定位 有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API.下面是示例代码. 前端代码 <%@ Page  ...

  8. C#的百度地图开发(二)转换JSON数据为相应的类

    原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...

  9. C#的百度地图开发(一)发起HTTP请求

    原文:C#的百度地图开发(一)发起HTTP请求 百度地图的开发文档中给出了很多的事例,而当用到具体的语言来开发时,又会有些差异.我是使用C#来开发的.在获取相应的数据时,需要通过URL传值,然后获取相 ...

随机推荐

  1. Ribbon源码分析(二)-- 服务列表的获取和负载均衡算法分析

    上一篇博客(https://www.cnblogs.com/yangxiaohui227/p/12614343.html)分享了ribbon如何实现对http://product/info/这个链接重 ...

  2. Python-维护排序好的序列模块-bisect

    bisect模块 处理已经排序的序列,升序,从小到大,分插入数据和查看插入数据的位置两大核心,类似于插入排序算法 插入数据 # 首先这个序列按升序规则已经排序好的 # 查找规则是二分查找,当数据相等的 ...

  3. web框架推导

    django 引言 所有的web应用本质上就是一个socket服务端,而用户的浏览器. 软件开发架构 cs架构 bs架构 本质上,bs架构也是cs架构 http协议 网络协议 http协议 数据传输是 ...

  4. Sequence(Poj2442)

    Sequence(Poj2442) 题意: 有m个数列,每个数列n个值,每个序列中选取一个值可以组成n^m种不同的序列,求前n小的序列和. Input 12 31 2 32 2 3 Output 3 ...

  5. 实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令

    一.安装目的 Mininet 安装之后,会连带安装 Open vSwitch,可以直接通过 Python 脚本调用Open vSwitch 命令,从而直接控制 Open vSwitch,通过实验了解调 ...

  6. matlab中reshape 重构数组

    来源:https://ww2.mathworks.cn/help/matlab/ref/reshape.html?searchHighlight=reshape&s_tid=doc_srcht ...

  7. ACM蒟蒻的爪巴之路

    ACM蒟蒻的爪巴之路 从今天开始ACM菜狗yjhdd的博客之路就要开始啦~ 以后会不定时更新题解以及自己的理解感悟和收获(ง •_•)ง (多半是想划水的时候来写写博客Orz)

  8. Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一)

    标题 Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(一) 技术 Spring Boot 2.Spring Security 5.JWT 运行环境 ...

  9. [Docker]linux异常关机,docker镜像丢失

    在运行中的docker容器遇到意外情况,可能会自动终止运行,例如磁盘空间不足. 解决办法: 找到/var/lib/docker/containers文件夹下的所有容器ID 执行命令,查看容器信息 ,找 ...

  10. centos7安装redis6

    wget http://download.redis.io/releases/redis-6.0.6.tar.gz?_ga=2.104030464.1049731693.1595900008-1330 ...