deg2rad () ожидает, что параметр 1 будет двойным, объект задан - PullRequest
0 голосов
/ 09 июля 2020

Когда я использую формулу гаверсинуса для определения расстояния, она показывает мне эту ошибку.

deg2rad () ожидает, что параметр 1 будет двойным, объект задан

Чтобы получить значения лат и другие от 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);
}

1 Ответ

0 голосов
/ 09 июля 2020

Когда вы используете запрос ниже

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

, вы получаете коллекцию. Вы должны пройти через него l oop, чтобы получить желаемую недвижимость. вам нужно использовать first(), чтобы получить просто объект.

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

Но даже сейчас ваша проблема не решена. Вы получаете объект. Вы должны использовать это свойство. Так что сделайте это так:

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

lon - это значение, которое вы получаете из базы данных. $lon->lon дает вам что-то вроде 0,25588484, которое требуется для метода deg2rad().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...