PHP根据两点间的经纬度计算距离
/**
* 根据两点间的经纬度计算距离
*
* @param float $lat
* 纬度值
* @param float $lng
* 经度值
*/
function getDistance($lat1, $lng1, $lat2, $lng2)
{
$earthRadius = 6367000; // approximate radius of earth in meters
$earthRadius = 6378138;
/*
* Convert these degrees to radians to work with the formula
*/
$lat1 = ($lat1 * pi()) / 180;
$lng1 = ($lng1 * pi()) / 180;
$lat2 = ($lat2 * pi()) / 180;
$lng2 = ($lng2 * pi()) / 180;
/*
* Using the Haversine formula http://en.wikipedia.org/wiki/Haversine_formula calculate the distance
*/
$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 showDistance(round($calculatedDistance));
}
function showDistance($distance)
{
if ($distance == '') {
return $distance;
}
if ($distance >= 1000) {
$distance = number_format($distance / 1000, 2) . 'KM';
} else {
$distance .= 'M';
}
return $distance;
}