php如何计算两坐标点之间的距离


Posted in PHP onDecember 29, 2018

本文实例为大家分享了php计算两坐标点之间距离的实现代码,供大家参考,具体内容如下

地球上两个点之间,可近可远。

当比较近的时候,可以忽略球面因素,当做是一个平面,这样就有了两种计算方法。

//两点间距离比较近
function getDistance($lat1, $lng1, $lat2, $lng2) 
{ 
 $earthRadius = 6367000; //地球半径m

 $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); 
} 

//两点间距离比较远
function getLongDistance($lat1, $lng1, $lat2,$lng2,$radius = 6378.137)
{
 $rad = floatval(M_PI / 180.0);

 $lat1 = floatval($lat1) * $rad;
 $lng1 = floatval($lng1) * $rad;
 $lat2 = floatval($lat2) * $rad;
 $lng2 = floatval($lng2) * $rad;

 $theta = $lng2 - $lng1;

 $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta));

 if ($dist < 0 ) {
  $dist += M_PI;
 }
 return $dist = $dist * $radius;
}

小编再为大家分享一段php坐标之间距离的求解代码:

<?php 
 define('EARTH_RADIUS', 6378.137);//地球半径 
 define('PI', 3.1415926); 
 /** 
 * 计算两组经纬度坐标 之间的距离 
 * params :lat1 纬度1; lng1 经度1; lat2 纬度2; lng2 经度2; len_type (1:m or 2:km); 
 * return m or km 
 */ 
 function GetDistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2) 
 { 
 $radLat1 = $lat1 * PI / 180.0; 
 $radLat2 = $lat2 * PI / 180.0; 
 $a = $radLat1 - $radLat2; 
 $b = ($lng1 * PI / 180.0) - ($lng2 * PI / 180.0); 
 $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2))); 
 $s = $s * EARTH_RADIUS; 
 $s = round($s * 1000); 
 if ($len_type > 1) 
 { 
 $s /= 1000; 
 } 
 return round($s, $decimal); 
 } 
 echo GetDistance(39.908156,116.4767, 39.908452,116.450479, 1);//输出距离/米

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
常用表单验证类,有了这个,一般的验证就都齐了。
Dec 06 PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
php用户注册时常用的检验函数实例总结
Dec 22 PHP
php操作memcache缓存方法分享
Jun 03 PHP
php 中的closure用法详解
Jun 12 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 PHP
PHP实现网站应用微信登录功能详解
Apr 11 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
Yii2 queue的队列使用详解
Jul 19 PHP
PHP命名空间简单用法示例
Dec 28 #PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 #PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 #PHP
PHP抽象类基本用法示例
Dec 28 #PHP
php PDO属性设置与操作方法分析
Dec 27 #PHP
php实现的PDO异常处理操作分析
Dec 27 #PHP
CI框架网页缓存简单用法分析
Dec 26 #PHP
You might like
生成静态页面的PHP类
2006/11/25 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
利用php生成验证码
2017/02/23 PHP
基于jQuery的自动完成插件
2011/02/03 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
vue resource发送请求的几种方式
2019/09/30 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python数据类型学习笔记
2016/01/13 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
业务主管岗位职责范本
2013/12/25 职场文书
眼镜促销方案
2014/03/15 职场文书
会计核算科岗位职责
2014/03/19 职场文书
村委会换届选举方案
2014/05/03 职场文书
政风行风评议心得体会
2014/10/21 职场文书
2016年国培研修日志
2015/11/13 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript