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实现paypal整合方法
Nov 28 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
php计算两个日期时间差(返回年、月、日)
Jun 19 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
PHP strripos函数用法总结
Feb 11 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
PHP中类与对象功能、用法实例解读
Mar 27 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笔记 字符串处理
2010/10/19 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
浅谈django orm 优化
2018/08/18 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
基于Python实现用户管理系统
2019/02/26 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
Python 使用list和tuple+条件判断详解
2019/07/30 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
关于VPN
2012/06/10 面试题
学校介绍信范文
2014/01/14 职场文书
高一生物教学反思
2014/01/17 职场文书
优秀教师事迹简介
2014/02/02 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
教师师德考核自我评价
2014/09/13 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
教你使用TensorFlow2识别验证码
2021/06/11 Python