Laravel 半正弦计算

Posted

技术标签:

【中文标题】Laravel 半正弦计算【英文标题】:Laravel haversine calculation 【发布时间】:2017-01-18 19:50:38 【问题描述】:

我用这个工具来计算两点之间的距离:

$location = new CnpPoi(28.535153, -81.383219);
$destination = new CnpPoi(42.594018, -88.433886)
$location->getDistanceInMilesTo($destination);
$location->getDistanceInMetersTo($destination);

需要在查询中使用它来获取按距离已经通过 url 他的 $lat e $long 的给定点的距离排序的商店。 如何在查询中使用此函数?

【问题讨论】:

【参考方案1】:
public function getStoresNear($latitude, $lngitude)

    $stores = Store::select('stores.*')
        ->selectRaw('( 6371 * acos( cos( radians(?) ) *
                           cos( radians( store_lat ) )
                           * cos( radians( store_long ) - radians(?)
                           ) + sin( radians(?) ) *
                           sin( radians( store_lat ) ) )
                         ) AS distance', [$latitude, $longitude, $latitude])
        ->orderBy('distance', 'desc')
        ->get();

    return $stores;

【讨论】:

语法错误 1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器相对应的手册 - 靠近 'long ) - radians(?) ) + sin( radians(?) ) * ' 在第 3 行(SQL:select tb_users.*, ( 6371 * acos( cos(弧度(41.9242814) ) * cos( 弧度( lat) ) * cos( 弧度( long ) - 弧度(12.4923974) ) + sin( 弧度(41.9242814) ) * sin( 弧度( lat ) ) ) AS 到tb_users 的距离按distance desc 排序)(查看:/home/gethelpme/public_html/local/resources/views/user/risultati.blade.php)(查看:/home/gethelpme/public_html/local/resources/views/user/risultati .blade.php) 哦,对不起,这个答案是针对 mysql 而不是 MariaDB。请在您的问题中发布 mariaDb 标签

以上是关于Laravel 半正弦计算的主要内容,如果未能解决你的问题,请参考以下文章

快速半正弦逼近(Python/Pandas)

一个半小时装个laravel累屁了

如何使用laravel搭建后台登录系统

如何重置laravel-admin的授权系统

laravel 执行migrate出现异常

在 Oracle 中查询半正弦公式