您现在的位置是:首页 > 文章详情  网站首页文章详情

mysql获取地理定位的信息

  • Administrator
  • 1095
  • 2020-04-24 10:11:09
  • PHP语言
简介/** * 获取平台的所有地址信息 * mysql获取地理定位的信息, * @return [type] [description] */ public function getNearbyAddressLis...
/**
     * 获取平台的所有地址信息
     * mysql获取地理定位的信息,
     * @return [type] [description]
     */
    public function getNearbyAddressList()
    {
        // 获取位置的经度
        $lng = I('lng', '');
        // 获取位置的经度
        $lat = I('lat', '');
        // 获取请求的类型
        $type = I('type', 1);
        // 获取搜索需要的关键字
        $keyword = I('keyword', '');
//        $lng = '113.3172';
//        $lat = '23.08331';
        // 定义多远为附近 单位为km
        $distance = 10;
        if(empty($lng) || empty($lat)){
            return DataFormat::code(500)->msg('请告诉我你的当前的定位信息')->data([])->out();
        }
        // 拼接普通的字段
        $field = 'Id, WeixinId, SiteId, Name, Mobile, Address, Lantitude, Longtitude';
        // 添加经纬度的长度计算
        $field .= ', round(ACOS(SIN(('.$lat.' * 3.1415) / 180) * SIN((Lantitude * 3.1415) / 180 ) + COS(('.$lat.'* 3.1415) / 180 ) * COS((Lantitude * 3.1415) / 180 ) *COS(('.$lng.'* 3.1415) / 180 - (Longtitude * 3.1415) / 180 ) ) * 6380, 2) as distance';
        $where_and = []; $where_or = [];
        $where_and['SiteID'] = $this->site->ID;
        $where_and['Status'] = 1;
        $where_and['IsDeleted'] = 0;
        if(!empty($keyword)){
            $where_and['Name'] = ['like', '%'.$keyword.'%'];
            $where_or['Address'] = ['like', '%'.$keyword.'%'];
            $where_main['_complex'] = array(
                $where_and,
                $where_or,
                '_logic' => 'or'
            );
        }else{
            $where_main = $where_and;
        }
        // 查询操作
        $model = model('LbsStore');
        $model->field($field)->condition($where_main);
        // 需要查询附近的时候做这个筛选
        if($type == 1) $model->having('distance <= '.$distance);
        // 执行查询操作
        $list = $model->order('distance asc')->getlist();
        return DataFormat::code(200)->msg('success')->data($list)->out();
    }

文章评论

Top