zoukankan      html  css  js  c++  java
  • php实现计算百度地图坐标之间距离的方法 阿星小栈

    /**
     * 计算两个坐标之间的距离(米)
     * @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($lnglat){ // 经度,纬度
        $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;
    }

    援引:http://www.jb51.net/article/59658.htm

  • 相关阅读:
    redis 数据类型详解 以及 redis适用场景场合
    angular.js记录
    Python chr() 函数
    Python frozenset() 函数
    Python 字典 dict() 函数
    Python set() 函数
    Python tuple 函数
    Python eval() 函数
    Python repr() 函数
    Python str() 函数
  • 原文地址:https://www.cnblogs.com/dereckbu/p/8342792.html
Copyright © 2011-2022 走看看