欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP计算百度地图两个GPS坐标之间距离的方法

程序员文章站 2022-10-04 17:57:36
本文实例讲述了php计算百度地图两个gps坐标之间距离的方法。分享给大家供大家参考。 具体实现方法如下: 复制代码 代码如下:/**  * 计算两个坐标之间...

本文实例讲述了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程序设计有所帮助。