获取坐标点周围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