在网上学习了根据经纬度计算距离的代码,很多的例子。特整理一份并且已经验证。
/**
* 根据两点间的经纬度计算距离
* @param $lng1
* @param $lat1
* @param $lng2
* @param $lat2
* @return int
*/
public static function getDistance($lng1, $lat1, $lng2, $lat2)
{
//将角度转为狐度
$radLat1 = deg2rad($lat1);//deg2rad()函数将角度转换为弧度
$radLat2 = deg2rad($lat2);
$radLng1 = deg2rad($lng1);
$radLng2 = deg2rad($lng2);
$a = $radLat1 - $radLat2;
$b = $radLng1 - $radLng2;
$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137 * 1000;
return $s;
}
PS :
1 、返回的结果单位 m 。
2 、测试 Google 地图经纬度和百度地图经纬度差 1m 左右。
详情地址: http://blog.mofeiwo.com/?p=408
欢迎指导。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.