//根据经纬度获取距离内的经纬度范围
//$longitude 请求位置的经度
//$latitude 请求位置的维度
//$radii 计算方圆内的半径
function getAround($longitude, $latitude, $radii) {
$radii = $radii > 100 ? 100 : $radii; //最大只能搜索100公里内的
$radii = $radii < 1 ? 1 : $radii; //最小能搜索1公里内的
$earthRadius = 6371004; //地球半径(单位米);
$earthGirth = 2 * pi() * $earthRadius;//地球周长
$radii = $radii * 1000; //把千米转为米
$latitudeDeviant = $earthGirth/360/1000000;//百度地图的一个偏移度为0.11119499645773M(地球经度划分为360份,后面还有6个小数位,所以还要除与1000000)
$latitudeCOS = COS($latitude*pi()/180);//当前维度下的cos值
$longitudeDeviant = $latitudeCOS * $latitudeDeviant;//当前维度下的经度偏移
$latitudeMax = $radii/$latitudeDeviant/1000000 + $latitude; //高维度值(该经纬度往高纬度走最多要到那个维度)
$latitudeMin = $latitude - $radii/$latitudeDeviant/1000000; //低纬度(该经纬度往低纬度走最多要到那个维度)
$longitudeMax = $radii/$longitudeDeviant/1000000 + $longitude;//该经纬度下往东跨跨越的经度值
$longitudeMin = $longitude - $radii/$longitudeDeviant/1000000;//该经纬度下往西跨跨越的经度值
$result['longitude']['left'] = intval($longitudeMin * 1000000)/1000000;//最左边的经度
$result['longitude']['right'] = intval($longitudeMax * 1000000)/1000000;//最右边的经度
$result['latitude']['up'] = intval($latitudeMax * 1000000)/1000000;//最上的维度
$result['latitude']['down'] = intval($longitudeMin * 1000000)/1000000;//最下的维度
return $result;
}
评论