PHP获取两点之间的距离

2019-02-14 11:15:30
/**
* 计算两点地理坐标之间的距离
* @param  float $longitude1 起点经度
* @param  float $latitude1 起点纬度
* @param  float $longitude2 终点经度
* @param  float $latitude2 终点纬度
* @param  Int $unit 单位 1:米 2:公里
* @param  Int $decimal 精度 保留小数位数
* @return float
*/
function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit = 2, $decimal = 2)
{
   $EARTH_RADIUS = 6370.996; // 地球半径系数
   $PI           = 3.1415926;
   $radLat1      = $latitude1 * $PI / 180.0;
   $radLat2      = $latitude2 * $PI / 180.0;
   $radLng1      = $longitude1 * $PI / 180.0;
   $radLng2      = $longitude2 * $PI / 180.0;
   $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 * $EARTH_RADIUS * 1000;
   if ($unit == 2) {
       $distance = $distance / 1000;
   }
   return round($distance, $decimal);
}

// 起点坐标
$longitude1 = 113.330405;
$latitude1  = 23.147255;
// 终点坐标
$longitude2 = 113.314271;
$latitude2  = 23.1323;
$distance   = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 1);
echo $distance . 'm'; // 2342.38m
$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 2);
echo $distance . 'km'; // 2.34km
 作者:傲雪星枫
 来源:CSDN 
 原文:https://blog.csdn.net/fdipzone/article/details/47162563 
 版权声明:本文为博主原创文章,转载请附上博文链接!