根据两地经纬度计算两地之间的间距距离,并用php编写案例
需求:已知当前用户地址位置坐标信息,计算目标坐标点的距离信息。
思路图:
计算公式:
W为纬度对应的弧度,J为经度对应的弧度,如上图所示
php案例:
/**
* 计算两点地理坐标之间的距离
* @param Decimal $lng1 起点经度
* @param Decimal $lat1 起点纬度
* @param Decimal $lng2 终点经度
* @param Decimal $lat2 终点纬度
* @param Int $unit 单位 1:米 2:公里
* @param Int $decimal 精度 保留小数位数
* @return Decimal
*/
public static function getlatlngspac($lng1, $lat1, $lng2, $lat2, $unit=1, $decimal=1){
$r = 6370.996; // 地球半径系数
$pi = 3.1415926; // 圆周率
$radLat1 = $lat1 * $pi / 180;
$radLat2 = $lat2 * $pi / 180;
$radLng1 = $lng1 * $pi / 180;
$radLng2 = $lng2 * $pi / 180;
$a = $radLat1 - $radLat2;
$b = $radLng1 - $radLng2;
$distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
$distance = $distance * $r * 1000;
if($unit==2){
$distance = $distance / 1000;
}
return round($distance, $decimal);
}
看看效果:
$lng1 = $wangdian['baiduapilng'];
$lat1 = $wangdian['baiduapilat'];
$lng2 = '113.62241';
$lag2 = '23.130767';
echo SelectOption::getlatlngspac($lng1,$lat1,$lng2,$lag2).'m';
业务功能:
相关文章