加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 如何在laravel中搜索给定距离和给定纬度和经度的所有位置

发布时间:2020-12-14 19:35:53 所属栏目:大数据 来源:网络整理
导读:这是我的晚会: 我通过以下方式在 mysql数据库中保存了商店详细信息. shopName,latitude,longitude, 现在,如果有人在经度和距离(如5公里)的位置给出了他的位置,我需要在距离他5公里范围内填写所有商店, 在这里用户是中心,半径是5公里,我需要找到该圈内的所有
这是我的晚会:
我通过以下方式在 mysql数据库中保存了商店详细信息.

shopName,latitude,longitude,

现在,如果有人在经度和距离(如5公里)的位置给出了他的位置,我需要在距离他5公里范围内填写所有商店,

在这里用户是中心,半径是5公里,我需要找到该圈内的所有商店,我的应用程序是在laravel 5.1中开发的

我试图遵循这个code,但它不会起作用.

谁能帮我.

解决方法

您可以在模型中添加以下代码

public function ScopeDistance($query,$from_latitude,$from_longitude,$distance)
{
  // This will calculate the distance in km
  // if you want in miles use 3959 instead of 6371
  $raw = DB::raw('ROUND ( ( 6371 * acos( cos( radians('.$from_latitude.') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('.$from_longitude.') ) + sin( radians('.$from_latitude.') ) * sin( radians( latitude ) ) ) ) ) AS distance');
  return $query->select('*')->addSelect($raw)->orderBy( 'distance','ASC' )->groupBy('distance')->having('distance','<=',$distance);
}

你可以用这样的东西

$ads = Ad::with(['user','photos'])->distance($from_latitude,$distance)->get();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读