/**
* 根据经纬度和半径计算出范围
* @param string $lat 纬度
* @param String $lng 经度
* @param float $radius 半径 - 单位是米
* @return Array 范围数组
*/
function calc_scope($lat, $lng, $radius)
{
if (empty($lat)) return [];
$degree = (24901 * 1609) / 360.0;
$dpmLat = 1 / $degree;
$PI = 3.1415926;
$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;
}
根据经纬度和半径计算出范围
最新推荐文章于 2023-01-29 18:03:02 发布