經過計算經緯度獲取附近的數據信息(未驗證)

 

/**
*計算某個經緯度的周圍某段距離的正方形的四個點
*
*@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

相關文章
相關標籤/搜索