/**
* 计算两点之间距离 有少许可以忽略的误差
* 两点不能差距太远
* 适用于 附近商家 附近的人 等距离计算
* @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);
}
/*计算两点距离
* lat1 点1纬度
* lng1 点1经度
* lat2 点2纬度
* lng2 点2经度
*
*/
function pointDistance(lat1, lng1, lat2, lng2) {
var rad2deg = function (r) {
var degree = r * 180 / Math.PI;
return degree;
}
var deg2rad = function(degree) {
var r = (degree / 180) * Math.PI;
return r;
}
//地球半径 米 半径越精确计算后的距离越精确
//var r = 6367000;
var r = 6378137;
var diffLat = lat1 - lat2;
var diffLng = lng1 - lng2;
var averageLat = (lat1 + lat2) / 2;
var weDistance = (deg2rad(diffLng) * r) * Math.cos(deg2rad(averageLat))
var nsDistance = r * deg2rad(diffLat);
var distance = (Math.sqrt(weDistance * weDistance + nsDistance * nsDistance)).toFixed(2);
return distance;
}