根据经纬度计算距离

函数

//求一个值的角度
function num2degree($num){
	return $num*pi()/180;
}

//计算经纬度之间的距离
function xy2km($x1,$y1,$x2,$y2){
	$r = 6378.14; //地球半径
	$x11 = num2degree($x1);    
	$x22 = num2degree($x2);  
	$a = abs($x11 - $x22);  
	$b = num2degree($y1) - num2degree($y2);  
	$s = round(2 * asin(sqrt(pow(sin($a/2),2) + cos($x11)*cos($x22)*pow(sin($b/2),2))) * $r);  
   	return $s;
}

使用

我们来计算成都到北京的直线距离

//成都市中心位于北纬30.67度,东经104.06度
//北京天安门广场的经纬度(东经:116°23,北纬:39°54
echo xy2km('39.54', '116.23','30.67', '104.06').'KM

输出

1482KM

 

我们百度下成都到北京的距离(不要相信百度知道上面说直线距离2700KM的人,完全在误导人)

 

所以计算结果是靠谱的