tp5 根据经纬度计算门店距离 可排序

$branchInfo=Db::name('Branch')->where('b_id','250')->find();
        $map['p.cate_id']=array('eq',5);
        $map['b.lng']=array('neq','');
        $map['b.lat']=array('neq','');
        $map['b.b_id']=array('neq',250);
        $branchGoodsList=Db::name('BranchStock')->alias('s')->field("s.s_id,s.s_stock,p.p_name,p.p_code,p.p_size,p.p_color,b.*,(6378.138 * 2 * asin(sqrt(pow(sin((lat * pi() / 180 - ".$branchInfo['lat']." * pi() / 180) / 2),2) + cos(lat * pi() / 180) * cos(".$branchInfo['lat']." * pi() / 180) * pow(sin((lng * pi() / 180 - ".$branchInfo['lng']." * pi() / 180) / 2),2))) * 1000) as distance")->join('think_products p','s.g_id=p.p_id','LEFT')->join('think_branch b','s.b_id=b.b_id','LEFT')->group('s.b_id')->where($map)->order('distance')->select();
        foreach($branchGoodsList as $k=>$v){
            $branchGoodsList[$k]['distance']=round($v['distance']/1000,2).'Km';
        }

利用mysql 计算两点间具体  用百度地图接口计算距离太慢了  还有次数限制 因此改装了sql

 

posted on 2017-12-05 17:08  长不大的菜鸟  阅读(1526)  评论(0编辑  收藏  举报

导航