php偏差范围计算,计算两个经纬度的距离/偏差米数_计算周边范围经纬度值

**计算两个经纬度的距离/偏差米数_计算周边范围经纬度值_PHP函数笔记**

计算经纬度距离,首先需要了解球面距离计算公示:

```php

r*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+ sin(lat1*pi()/180 )*sin(lat2*pi()/180))r*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+ sin(lat1*pi()/180 )*sin(lat2*pi()/180))

```

其中,lat1,lng1是纬度\经度的弧度单位,r为地球半径。

**获取周边范围的经纬度值 函数**

````php

/**

* 根据当前经纬度获取周边范围的经纬度值

* @param $lngfloat 经度

* @param $latfloat 纬度

* @param $range范围:多少千米内,单位km

* @return array

*/

function point2range($lng, $lat, $range = 2.5){

//基于地球半径 R = 6370996.81

$lat_range = 180 / pi() * $range / 6370.99681; //范围:$range 代表周边范围约 几km 之内,单位km

$lng_range = $lat_range / cos($lat * pi() / 180);

$data['lng'] = array($lng-$lng_range,$lng+$lng_range);

$data['lat'] = array($lat-$lat_range,$lat+$lat_range);

return $data;

}

````

**计算两个经纬度的距离 函数**

```php

/**

* 计算两个经纬度的距离

* @param $lng1float 经度1

* @param $lat1float 纬度1

* @param $lng2float 经度2

* @param $lat2float 纬度2

* @return array

*/

function get_distance($lng1, $lat1, $lng2, $lat2){

//基于地球半径 R = 6370996.81

$earth_radius = 6370996.81;

$lat1 = ($lat1 * pi() ) / 180;

$lng1 = ($lng1 * pi() ) / 180;

$lat2 = ($lat2 * pi() ) / 180;

$lng2 = ($lng2 * pi() ) / 180;

$distance = acos(cos($lat1) * cos($lat2)

* cos($lng1 - $lng2) + sin($lat1)

* sin($lat2));

$calculated_distance = $distance * $earth_radius;

return round($calculated_distance);

}

```

最后更新于 2019-12-03 12:08:35 并被添加「php函数 经纬度计算 php函数笔记」标签,已有 2241 位童鞋阅读过。

本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处

相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值