计算经纬度求出最短的距离

//求坐标最近的距离
public static 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);

}
$ibeacon = explode(',',$ibea_position);  //分割字符串为数组
$distance = [];
foreach ($goods_position as $key=>$value)
{
    $value = explode(',',$value['goods_position']);  //分割字符串为数组
    $distance[$key] = self::getDistance($ibeacon[0],$ibeacon[1],$value[0],$value[1],2,2); //循环对比(返回单位为米)
}
$pos = array_search(min($distance),$distance); //返回最小的值
$recent = $goods_position[$pos];

你可能感兴趣的:(计算经纬度求出最短的距离)