/**
* 根据经纬度和半径查询在此范围内的所有 * @param String $lat 纬度 * @param String $lng 经度 * @param float $radius 半径 * @return Array 计算出来的结果 */ public function doPageFujin() { global $_W,$_GPC; $uniacid = $_W['uniacid']; $lat = $_REQUEST['lat']; $lng = $_REQUEST['lo']; $radius = 5000;//方圆5公里的 $scope = $this->calcScope($lat, $lng, $radius); // 调用范围计算函数,获取最大最小经纬度 // var_dump($scope); $minlat = $scope['minLat']; $maxlat = $scope['maxLat']; $minlong = $scope['minLng']; $maxlong = $scope['maxLng']; /** 查询经纬度在 $radius 范围内的电站的详细地址 */ $where1 = " and latitude >= '{$minlat}' and latitude <= '{$maxlat}' and longitude >= '{$minlong}' and longitude <= '{$maxlong}'"; $sql = "SELECT * FROM ".tablename("pinba_pinyou")." where uniacid=:uniacid ". $where1; $list = pdo_fetchall($sql,array(":uniacid"=>$uniacid)); // $sql = pdo_fetchall("SELECT * FROM".tablename("pinba_pinyou")."where uniacid=:uniacid ". $where1,array(":uniacid"=>$uniaicd)); // var_dump($sql); return $this->result(0,"success",$list); }/**
* 根据经纬度和半径计算出范围 * @param string $lat 纬度 * @param String $lng 经度 * @param float $radius 半径 * @return Array 范围数组 */ private function calcScope($lat, $lng, $radius) { $degree = (24901*1609)/360.0; $dpmLat = 1/$degree; $radiusLat = $dpmLat*$radius; $minLat = $lat - $radiusLat; // 最小纬度 $maxLat = $lat + $radiusLat; // 最大纬度 $mpdLng = $degree*cos($lat * (PI/180)); $dpmLng = 1 / $mpdLng; $radiusLng = $dpmLng*$radius; $minLng = $lng - $radiusLng; // 最小经度 $maxLng = $lng + $radiusLng; // 最大经度 /** 返回范围数组 */ $scope = array( 'minLat' => $minLat, 'maxLat' => $maxLat, 'minLng' => $minLng, 'maxLng' => $maxLng ); return $scope; }