根据经纬度计算两点间的距离
2016-12-12 17:32
495 查看
/** * 根据两点间的经纬度计算距离
* @param float $lat1 纬度值1
* @param float $lng1 经度值1
* @param float $lat2 纬度值2
* @param float $lng2 经度值2
* @return 距离km
*/
private static function _getDistance($lat1, $lng1, $lat2, $lng2) {
$earthRadius = 6367000;
$lat1 = ($lat1 * pi() ) / 180;
$lng1 = ($lng1 * pi() ) / 180;
$lat2 = ($lat2 * pi() ) / 180;
$lng2 = ($lng2 * pi() ) / 180;
$calcLongitude = $lng2 - $lng1;
$calcLatitude = $lat2 - $lat1;
$stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
$stepTwo = 2 * asin(min(1, sqrt($stepOne)));
$calculatedDistance = $earthRadius * $stepTwo;
return round($calculatedDistance) / 1000;
}
* @param float $lat1 纬度值1
* @param float $lng1 经度值1
* @param float $lat2 纬度值2
* @param float $lng2 经度值2
* @return 距离km
*/
private static function _getDistance($lat1, $lng1, $lat2, $lng2) {
$earthRadius = 6367000;
$lat1 = ($lat1 * pi() ) / 180;
$lng1 = ($lng1 * pi() ) / 180;
$lat2 = ($lat2 * pi() ) / 180;
$lng2 = ($lng2 * pi() ) / 180;
$calcLongitude = $lng2 - $lng1;
$calcLatitude = $lat2 - $lat1;
$stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
$stepTwo = 2 * asin(min(1, sqrt($stepOne)));
$calculatedDistance = $earthRadius * $stepTwo;
return round($calculatedDistance) / 1000;
}
相关文章推荐
- 关于npm install 出错的问题
- mysql重复记录的查询删除方法
- ASP.NET MVC中Unobtrusive Ajax的妙用
- iOS - 利用AFN检测网络状态的类封装
- Java继承中方法的覆盖和重载
- 坑【3】父类子类中关于super
- Centos环境下Tomcat启动缓慢
- thinkphp thinkcmf 右下角图标(Trace)的去除
- dom4j的xpath查找xml的指定节点
- Android自定义数字键盘简单封装
- 图的存储结构-十字链表和邻接多重表
- 关于ListView的 addHeaderView(...) 方法
- Event preventDefault()与stopPropagation()区别
- MySQL 5.7 No directory, logging in with HOME=/
- Android性能优化之使用线程池处理异步任务
- Leetcode 141 Linked List Cycle
- Linux 小工具---多台机器执行命令或复制文件
- java正则表达式教程(翻译)
- 能否在函数内动态获取函数名称 ?(亲测,居然真的可以)
- iOS 隐藏Tabbar