php两点地理坐标距离的计算方法


Posted in PHP onDecember 29, 2018

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

功能:根据圆周率和地球半径系数与两点坐标的经纬度,计算两点之间的球面距离。

获取两点坐标距离:

<?php
/**
 * 计算两点地理坐标之间的距离
 * @param Decimal $longitude1 起点经度
 * @param Decimal $latitude1 起点纬度
 * @param Decimal $longitude2 终点经度 
 * @param Decimal $latitude2 终点纬度
 * @param Int   $unit    单位 1:米 2:公里
 * @param Int   $decimal  精度 保留小数位数
 * @return Decimal
 */
function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2){

  $EARTH_RADIUS = 6370.996; // 地球半径系数
  $PI = 3.1415926;

  $radLat1 = $latitude1 * $PI / 180.0;
  $radLat2 = $latitude2 * $PI / 180.0;

  $radLng1 = $longitude1 * $PI / 180.0;
  $radLng2 = $longitude2 * $PI /180.0;

  $a = $radLat1 - $radLat2;
  $b = $radLng1 - $radLng2;

  $distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
  $distance = $distance * $EARTH_RADIUS * 1000;

  if($unit==2){
    $distance = $distance / 1000;
  }

  return round($distance, $decimal);

}

// 起点坐标
$longitude1 = 113.330405;
$latitude1 = 23.147255;

// 终点坐标
$longitude2 = 113.314271;
$latitude2 = 23.1323;

$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 1);
echo $distance.'m'; // 2342.38m

$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 2);
echo $distance.'km'; // 2.34km

?>

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

PHP 相关文章推荐
Smarty结合Ajax实现无刷新留言本实例
Jan 02 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 PHP
php中mysql模块部分功能的简单封装
Sep 30 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
php错误日志简单配置方法
Jul 11 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
CodeIgniter框架数据库基本操作示例
May 24 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
php如何计算两坐标点之间的距离
Dec 29 #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
You might like
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
JavaScript实现简单的数字倒计时
2015/05/15 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
口腔医学技术应届生求职信
2013/11/09 职场文书
会计职业生涯规划书
2014/01/13 职场文书
事业单位辞职信范文
2014/01/19 职场文书
工厂会计员职责
2014/02/06 职场文书
对公司合理化的建议书
2014/03/12 职场文书
人事聘任通知
2015/04/21 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
如何用PHP实现多线程编程
2021/05/26 PHP
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python