最近用thinkphp5.0做了一个项目要根据用户的当前位置算出和店铺的距离 并且 踢出不在该配送距离的商家。
百度上也有很多方面,我还是搞了一天时间 心累心累心累心累
产考方法根据经纬度查询附近几公里的门店
不多说了,直接上我的代码吧
//查询店铺距离
$distanceSql = ' ROUND(6378.138*2*ASIN(SQRT(POW(SIN(('. $params['latitude'] .'*PI()/180-latitude*PI()/180)/2),2)+COS('. $params['latitude'] .'*PI()/180)*COS(latitude*PI()/180)*POW(SIN(('. $params['longitude'] .'*PI()/180-longitude*PI()/180)/2),2)))*1000)';
// 执行查询
$list = $this
->field(['*',
"$distanceSql AS distance"
])
->where('distances','=',0)
->whereOR('distances','EXP',">= $distanceSql")
->order($sort)
->paginate($params['listRows'], false