/**
* 计算两点之间距离 有少许可以忽略的误差
* 两点不能差距太远 * 适用于 附近商家 附近的人 等距离计算
* @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);
}
网友评论