laravel5.5+对自定义二维数组进行分页,demo:定位经纬度距离远近排序分页
Laravel  /  管理员 发布于 2年前   856
laravel5.5+对自定义二维数组进行分页,demo:定位经纬度距离远近排序分页
功能:
根据定位当前经纬度跟店面经纬度计算出距离 比如0.1km
根据两地经纬度计算两地之间的间距距离函数
把距离值循环存入每条数据里面增加元素space
根据space值由低到高排序并分页显示
废话不多说直接贴代码:
//列表数组 自定义分页
public function plistdata()
{
$where = request()->input();
if (!isset($where['city'])) {return null;}
try {
$res = Palmlife::select('id','city', 'area', 'business','type_name','title','lat','lng')->where('city', $where['city'])->where(function ($query) use($where) {
if (isset($where['area'])) {
$query->where('area',$where['area']);
}
if (isset($where['business'])) {
$query->where('business',$where['business']);
}
if (isset($where['kw'])) {
$query->where('title','like',"%{$where['kw']}%");
}
});
$res = $res->get()->toArray();
//循环为每天数据添加距离值
foreach ($res as &$v){
//定位经纬度与店面的距离(两经纬度计算) 0.1km
$space = SelectOption::getlatlngspac($where['lng'],$where['lat'],$v['lng'],$v['lat'],2,2);
$v['space'] = $space;
}
//排序 根据与店面距离从近到远排序
$a = array_column($res,'space');
array_multisort($a,SORT_ASC,$res);//SORT_DESC ASC
//对数组 重组后分页
$page = $where['page'] ?? 1; //当前页数 默认1
$perPage = 10; //每页的条数
$offset = ($page * $perPage) - $perPage;//计算每页分页的初始位置
//实例化LengthAwarePaginator类,并传入对应的参数
$data = new LengthAwarePaginator(array_slice($res, $offset, $perPage, true), count($res), $perPage, $page, ['path' => request()->url(), 'query' => request()->query()]);
return response()->json(
array(
'status' => 200,
'msg' => '成功',
'res' => $data)
);
} catch (Exception $e) {
return response()->json(
array(
'status' => 201,
'msg' => '失败')
);
}
}
博主 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..xiaoB 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..BUG4 在
你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..博主 在
go语言+beego框架中获取get,post请求的所有参数中评论 @ t1 直接在router.go文件中配就ok..Jade 在
如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号