获取坐标点周围Nkm范围内最小最大经纬度(不跨越赤道地区适用)

编程

    /**

* 根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围

* @param $lng

* @param $lat

* @param float $distance 单位:km

* @return array

*/

static function location_range($lng, $lat,$distance = 0.5)

{

$earthRadius = 6378.137;//单位km

$d_lng = 2 * asin(sin($distance / (2 * $earthRadius)) / cos(deg2rad($lat)));

$d_lng = rad2deg($d_lng);

$d_lat = $distance / $earthRadius;

$d_lat = rad2deg($d_lat);

return array(

"lat_start" => $lat - $d_lat,//纬度开始

"lat_end" => $lat + $d_lat,//纬度结束

"lng_start" => $lng - $d_lng,//经度开始

"lng_end" => $lng + $d_lng//经度结束

);

}

其他: 其实不算准确,但是可以调整$distance 获取适度范围;

根本原因在于 $earthRadius  地球半径 随着纬度上升, 越来越小,这个值应该根据所在地区做调整

以上是 获取坐标点周围Nkm范围内最小最大经纬度(不跨越赤道地区适用) 的全部内容, 来源链接: utcz.com/z/517770.html

回到顶部