函数
//求一个值的角度 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的人,完全在误导人)
所以计算结果是靠谱的