deg2rad() 期望参数 1 为双精度,给定对象

deg2rad() expects parameter 1 to be double, object given

当我使用 haversine 公式求距离时,它显示这个错误

deg2rad() expects parameter 1 to be double, object given

从 mysql

获取纬度和其他值
$users_id = Auth::id();
$lon = DB::table('tbl')
        ->SELECT('lon')
        ->where("id", $users_id)
        ->get();
$lat = DB::table('tbl')
        ->SELECT('lat')
        ->where("id", $users_id)
        ->get();

$vehicle_lon=DB::table('tbl_2')
            ->select('lon')
            ->get();
$vehicle_lat=DB::table('tbl_2')
            ->select('lat')
            ->get();

我的代码

function haversineGreatCircleDistance($lat, $lon, $vehicle_lat, $vehicle_lon, $earthRadius = 6371000)
{      

    // convert from degrees to radians
    $latFrom = deg2rad($lat);
    $lonFrom = deg2rad($lon);
    $latTo = deg2rad($vehicle_lat);
    $lonTo = deg2rad($vehicle_lon);
}

当您使用以下查询时

$lon = DB::table('tbl')
    ->SELECT('lon')
    ->where("id", $users_id)
    ->get();

你得到一个 collection。您必须遍历它才能获得所需的 属性。您需要使用 first() 来获得 object.

$lon = DB::table('tbl')
    ->SELECT('lon')
    ->where("id", $users_id)
    ->first();

但是到现在你的问题还没有解决。你得到一个 object。你必须使用它的 属性。所以让它像

$lonFrom = deg2rad($lon->lon);

lon 是您从数据库中获取的值。 $lon->lon 给你类似 0.25588484 的东西,这是 deg2rad() 方法所必需的。