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 相关文章推荐
给初学PHP的5个入手程序
Nov 23 PHP
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
php取整函数ceil,floo,round的用法及介绍
Aug 31 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
ThinkPHP缓存方法S()概述
Jun 13 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
Jun 06 PHP
CI操作cookie的方法分析(基于helper类库)
Mar 28 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
May 05 PHP
PHP执行linux命令6个函数代码实例
Nov 24 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数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php读取本地json文件的实例
2018/03/07 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
vue2 全局变量的设置方法
2018/03/09 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
python 检测图片是否有马赛克
2020/12/01 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
大学在校生求职信范文
2013/11/21 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
纠纷协议书
2014/04/16 职场文书
贷款担保申请书
2014/05/20 职场文书
全运会口号
2014/06/20 职场文书
励志演讲稿300字
2014/08/21 职场文书
捐助感谢信
2015/01/22 职场文书
2015员工年度考核评语
2015/03/25 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS