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下MAIL的另一解决方案
Oct 09 PHP
一个php作的文本留言本的例子(一)
Oct 09 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 PHP
php字符串替换函数substr_replace()用法实例
Mar 17 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
php实现Session存储到Redis
Nov 11 PHP
教大家制作简单的php日历
Nov 17 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
浅谈如何提高PHP代码质量之端到端集成测试
May 28 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环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
JS 控制非法字符的输入代码
2009/12/04 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
python 贪心算法的实现
2020/09/18 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
实习生单位鉴定意见
2013/12/04 职场文书
学前班教师的自我鉴定
2013/12/05 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
房屋产权证明书
2014/10/15 职场文书
爱情保证书
2015/01/17 职场文书
七年级地理教学计划
2015/01/22 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
详解thinkphp的Auth类认证
2021/05/28 PHP
关于JavaScript轮播图的实现
2021/11/20 Javascript
Pandas 数据编码的十种方法
2022/04/20 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js