0
回答
PHP 经纬度a,经纬度b,算出ab的距离
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

求两个PHP函数。

1 给你经纬度,算出最大,最小经纬度。

2 给你经纬度a,经纬度b,算出ab的距离

以下函数算出来结果好像不对哦。。

/**
 * 获取当前位置三公里内最大、最小经纬度
 * 查找一定范围内的经纬度值
 * 传入值:纬度  经度  查找半径(m)
 * 返回值:最小纬度、经度,最大纬度、经度 
 */
function getAround($lat, $lon, $raidus) {
    $PI = 3.14159265;     // 圆周率
    $EARTH_RADIUS = 6378137;     // 地球半径
    $RAD = Math . PI / 180.0;    // 弧度
    $latitude = $lat;
    $longitude = $lon;
    $degree = (24901 * 1609) / 360.0;
    $raidusMile = $raidus;
    $dpmLat = 1 / $degree;
    $radiusLat = $dpmLat * $raidusMile;
    $minLat = $latitude - $radiusLat;
    $maxLat = $latitude + $radiusLat;
    $mpdLng = $degree * cos($latitude * ($PI / 180));
    $dpmLng = 1 / $mpdLng;
    $radiusLng = $dpmLng * $raidusMile;
    $minLng = $longitude - $radiusLng;
    $maxLng = $longitude + $radiusLng;


    $result['maxLng'] = $maxLng; //最大经度
    $result['maxLat'] = $maxLat;
    $result['minLng'] = $minLng;
    $result['minLat'] = $minLat;
    return $result;
}


// 本函数为获取两坐标之间的距离
// a纬度 a经度 b纬度 b经度
function getDistance($lat1, $lng1, $lat2, $lng2) {
    $EARTH_RADIUS = 6378.137;
    $radLat1 = rad($lat1);
    $radLat2 = rad($lat2);
    $a = $radLat1 - $radLat2;
    $b = rad($lng1) - rad($lng2);
    $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
    $s = $s * $EARTH_RADIUS;
    $s = round($s * 10000) / 10000;
    return $s;
}
function rad($d) {
    return $d * 3.1415926535898 / 180.0;
}

<无标签>
举报
顶部