两点之间距离 PHP版(美团技术博客算法)

/**
 * 计算两点之间距离 有少许可以忽略的误差 
* 两点不能差距太远 * 适用于 附近商家  附近的人 等距离计算 
* @author tony (*****************) 
* @param $lat1 
* @param $lng1 
* @param $lat2 
* @param $lng2 
* @return string 
*/ 
function pointDistance($lat1, $lng1, $lat2, $lng2)
{
    //地球半径
    $r = 6367000;
    $diffLat = bcsub($lat1, $lat2, 5);
    $diffLng = bcsub($lng1, $lng2, 5);
    $averageLat = bcdiv(($lat1 + $lat2), 2, 5);
    $WEDistance = bcmul(bcmul(deg2rad($diffLng), $r, 5),cos(deg2rad($averageLat)), 5);
    $NSDistance = bcmul($r, deg2rad($diffLat), 5);
    return bcadd(sqrt($WEDistance * $WEDistance + $NSDistance * $NSDistance), 0, 2);
}

你可能感兴趣的:(两点之间距离 PHP版(美团技术博客算法))