分享按钮

根据经纬度查询由远到近的数据

默认分类 / 2759人浏览 / 0人评论
SELECT  
 *,(  
   6371 * acos (  
     cos ( radians( 34.21702164242081 ) )  
     * cos( radians( latitude ) )  
     * cos( radians( longitude ) - radians( 113.76823781349185 ) )  
     + sin ( radians( 34.21702164242081 ) )  
     * sin( radians( latitude ) )  
   )  
 ) AS distance  //距离
FROM xing_store
HAVING distance < 0.5  //筛选距离小于0.5km的商家(可不写),如果没查到数据就是没有小于0.5km的商家
ORDER BY distance  //根据距离远近来排序 默认升序 (可不写)
LIMIT 0 , 10;  //显示前10条数据(可不写)

thinkphp 

 $list= Db::table('xing_store')->field('*,6371 * acos(

                    cos ( radians( '.$latitude.' ) )

                    * cos( radians ( latitude ) )

                    * cos( radians( longitude ) - radians( '.$longitude.' ) )

                    + sin( radians( '.$latitude.' ))

                    * sin( radians( latitude ) )

                )

                as distance')

            ->having('distance < 10') 这个是 10公里内的数据

            ->order('distance asc')

            ->where($where)

            ->page($page,$size)

            ->select();


感谢博主,喝杯咖啡~