PHP 通过经纬度计算距离

发布于 2020-10-05  30 次阅读


传递参数:

地址1的纬度:$lat1  ,经度:$lng1,

地址2的纬度   $lat2  ,经度:$lng2,

示例:

$distance = getDistance($lat1, $lng1, $u_lat, $u_lng);
if ($distance < 1000) $distance = $distance . 'm';
if ($distance > 1000) $distance = round($distance / 1000) . 'km';

封装的方法:

//根据经纬度,计算距离
function getDistance($lat1, $lng1, $lat2, $lng2) {
	$earthRadius = 6367000;
	$lat1 = ($lat1 * pi()) / 180;
	$lng1 = ($lng1 * pi()) / 180;
	$lat2 = ($lat2 * pi()) / 180;
	$lng2 = ($lng2 * pi()) / 180;
	$calcLongitude = $lng2 - $lng1;
	$calcLatitude = $lat2 - $lat1;
	$stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
	$stepTwo = 2 * asin(min(1, sqrt($stepOne)));
	$calculatedDistance = $earthRadius * $stepTwo;
	return round($calculatedDistance);
}

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。