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 相关文章推荐
用PHP编程开发“虚拟域名”系统
Oct 09 PHP
实现分十页分向前十页向后十页的处理
Oct 09 PHP
php 获取远程网页内容的函数
Sep 08 PHP
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
php 短链接算法收集与分析
Dec 30 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
php curl模拟post提交数据示例
Dec 31 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
php实现的漂亮分页方法
Apr 17 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 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
搜索引擎技术核心揭密
2006/10/09 PHP
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
Extjs 几个方法的讨论
2010/01/28 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
Python是编译运行的验证方法
2015/01/30 Python
numpy返回array中元素的index方法
2018/06/27 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
Django-imagekit的使用详解
2020/07/06 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
北京SQL新华信咨询
2016/09/30 面试题
什么是SCM(软件配置管理)
2014/08/16 面试题
公司行政经理岗位职责
2013/12/24 职场文书
2014年审计工作总结
2014/11/17 职场文书
2015年征兵工作总结
2015/07/23 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
Nebula Graph解决风控业务实践
2022/03/31 MySQL