/** *計算某個經緯度的周圍某段距離的正方形的四個點 * *@param lng float 經度 *@param lat float 緯度 *@param distance float 該點所在圓的半徑,該圓與此正方形內切,默認值爲0.5公里 *@return array 正方形的四個點的經緯度座標 */ function returnSquarePoint($lng, $lat,$distance = 0.5){ define(EARTH_RADIUS, 6371);//地球半徑,平均半徑爲6371km $dlng = 2 * asin(sin($distance / (2 * EARTH_RADIUS)) / cos(deg2rad($lat))); $dlng = rad2deg($dlng); $dlat = $distance/EARTH_RADIUS; $dlat = rad2deg($dlat); return array( 'left-top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng), 'right-top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng), 'left-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng), 'right-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng) ); } function getdistance($lng1,$lat1,$lng2,$lat2){//根據經緯度計算距離 單位爲千米 //將角度轉爲狐度 $radLat1=deg2rad($lat1); $radLat2=deg2rad($lat2); $radLng1=deg2rad($lng1); $radLng2=deg2rad($lng2); $a=$radLat1-$radLat2;//兩緯度之差,緯度<90 $b=$radLng1-$radLng2;//兩經度之差緯度<180 $s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))*6378.137; return $s; }
函數 returnSquarePoint 是用來獲取某個座標點附近0.5KM以內的正方形的四個點,經過此辦法獲取附近的面積,並經過此函數組合出所需的SQL語句html
轉: https://blog.csdn.net/w_yunlong/article/details/50432458數組
https://my.oschina.net/jack088/blog/3012861函數
https://www.cnblogs.com/xiaoyu5062/articles/7687097.htmlspa
https://cloud.tencent.com/developer/article/1112870.net