根据经纬度获得附近标记点查询thinkphp+mysql

根据经纬度获得附近标记点查询thinkphp+mysql

地图标记点查询,经常有获得附近店铺,附近的人,或者附近美食需求。如何获取呢?本示例以 php框架thinkphp和数据库mysql演示。

第一段程序:获取经纬度半径范围,单位是米

 /**
     * Desc: 根据经纬度,半径范围获取附近
     * User: JamesLiu
     * Date: 2019/5/13
     * Time: 15:38
     * @param $longitude 经度
     * @param $latitude 纬度
     * @param $raidus 半径范围(单位:米)
     * @return array
     */
    public function getAround($longitude, $latitude, $raidus)
    {
        $PI = 3.14159265;
        $degree = (24901 * 1609) / 360.0;
        $dpmLat = 1 / $degree;
        $radiusLat = $dpmLat * $raidus;
        $minLat = $latitude - $radiusLat;
        $maxLat = $latitude + $radiusLat;
        $mpdLng = $degree * cos($latitude * ($PI / 180));
        $dpmLng = 1 / $mpdLng;
        $radiusLng = $dpmLng * $raidus;
        $minLng = $longitude - $radiusLng;
        $maxLng = $longitude + $radiusLng;
        return array ('minLat'=>$minLat, 'maxLat'=>$maxLat, 'minLng'=>$minLng, 'maxLng'=>$maxLng);
    }

第二段程序:组装成mysql 的查询语句(thinkphp)

 $array = $this->getAround(115.826646, 28.718022, 2000);

 $condition['longitude'] = array(array('EGT', $array['minLng']), array('ELT', $array['maxLng']), 'and');//(`longitude` >= minLng) AND (`longitude` <= maxLng)

 $condition['latitude'] = array(array('EGT', $array['minLat']), array('ELT', $array['maxLat']), 'and');//(`latitude` >= minLat) AND (`latitude` <=maxLat)

第三段:thinkphp 数据库查询

//thinkphp 数据库查询非常容易,具体如下
$getData=Db::table('地图标记表')->where($condition)->select();

0 0 投票数
文章评分
订阅评论
提醒
1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
1111111111
3 月 前

非常感谢,好用

1
0
希望看到您的想法,请您发表评论x