• ThinkPHP实现经纬度范围查询


    经纬度范围获取

     1     /**
     2      * Desc: 根据经纬度,半径范围获取附近
     3      * User: JamesLiu
     4      * Date: 2019/5/13
     5      * Time: 15:38
     6      * @param $longitude 经度
     7      * @param $latitude 纬度
     8      * @param $raidus 半径范围(单位:米)
     9      * @return array
    10      */
    11     public function getAround($longitude, $latitude, $raidus)
    12     {
    13         $PI = 3.14159265;
    14         $degree = (24901 * 1609) / 360.0;
    15         $dpmLat = 1 / $degree;
    16         $radiusLat = $dpmLat * $raidus;
    17         $minLat = $latitude - $radiusLat;
    18         $maxLat = $latitude + $radiusLat;
    19         $mpdLng = $degree * cos($latitude * ($PI / 180));
    20         $dpmLng = 1 / $mpdLng;
    21         $radiusLng = $dpmLng * $raidus;
    22         $minLng = $longitude - $radiusLng;
    23         $maxLng = $longitude + $radiusLng;
    24         return array('minLng' => $minLng, 'maxLng' => $maxLng, 'minLat' => $minLat, 'maxLat' => $maxLat);
    25     }

    经纬度距离组装成sql

    1 $array = $this->getAround(115.826646, 28.718022, 2000);
    2  $condition['longitude'] = array(array('EGT', $array['minLng']), array('ELT', $array['maxLng']), 'and');//(`longitude` >= minLng) AND (`longitude` <= maxLng)
    3  $condition['latitude'] = array(array('EGT', $array['minLat']), array('ELT', $array['maxLat']), 'and');//(`latitude` >= minLat) AND (`latitude` <=maxLat)
  • 相关阅读:
    Python内置函数(22)——list
    Git在不同环境换行符设置
    Spring之AOP
    Spring之IOC
    Spring--框架简介
    git-远程协作
    git-SSH连接配置
    git-本地操作
    git简介
    浅谈Sql各种join的用法
  • 原文地址:https://www.cnblogs.com/zjj1990/p/12456298.html
Copyright © 2020-2023  润新知