最近做一个H5活动的项目,有个要求是必须现场玩家才能参与,所以就需要计算玩家位置和活动地点的距离来判断是否在活动现场。
以下是写的一个根据经纬度计算两地距离的方法
1 function getDistance($lng1, $lat1, $lng2, $lat2) { 2 $EARTH_RADIUS = 6378.137; 3 $radLat1 = rad($lat1); 4 $radLat2 = rad($lat2); 5 $a = $radLat1 - $radLat2; 6 $b = rad($lng1) - rad($lng2); 7 $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))); 8 $s = $s * $EARTH_RADIUS; 9 if ($s < 1) { 10 $s = round($s * 1000); 11 $s.='m'; 12 } else { 13 $s = round($s, 2); 14 $s.='km'; 15 } 16 return $s; 17 } 18 function rad($d) { 19 return $d * 3.1415926535898 / 180.0; 20 }