TP5查询最近景区

Posted 去糖不加冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TP5查询最近景区相关的知识,希望对你有一定的参考价值。

根据手机端传过来的经纬度坐标值,通过查询mysql数据库计算出距离每个景区的公里数,然后通过having取出1000公里以内的,order by 排正序再使用limit取出第一个,就是距离最近的那个景区了。

   /*
    根据经纬度坐标获取最近的景区
    */
    public function getAeraMessage(){
        $lng = input('longitude');//经度坐标
        $lat = input('latitude');//纬度坐标
        if(empty($lng)  || empty($lat)){
             echo json_encode(['stat'=>0,'err'=>'缺少参数']);
             exit();
        }
        $message = Db::name('scenic_area')
        ->field('id as scenic_id,scenic_name,scenic_address,scenic_picture,
        (
         6371 * acos(
        cos(radians('.$lat.'))
        * cos( radians( latitude ) )
        * cos(radians( longitude ) - radians('.$lng.'))
        +
        sin( radians('.$lat.') )
        * sin( radians( latitude ) )
        )
        ) as distance')
        ->having('distance < 1000')//查询1000公里以内
        ->order('distance asc')
        ->limit(1)
        ->find();
        if(empty($message)){
           echo json_encode(['status'=>0,'err'=>'没有数据']);
             exit(); 
        }
           echo json_encode(['status'=>1,'data'=>$message]);
    }

以上是关于TP5查询最近景区的主要内容,如果未能解决你的问题,请参考以下文章

TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect(代码片段

TP5 多条件whereOr查询

TP5.1 whereOr查询

微信小程序实现微信登陆(TP5后端)

tp5查询最多获取多少条

TP5中多字段聚合查询,多字段运算总和(其他运算)