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面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
php学习笔记(三)操作符与控制结构
Aug 06 PHP
php&amp;mysql 日期操作小记
Feb 27 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP的微信支付接口使用方法讲解
Mar 08 PHP
phpmyadmin在宝塔面板里进不去的解决方案
Jul 06 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 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使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
浅析Python中的多进程与多线程的使用
2015/04/07 Python
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
浅析Python基础-流程控制
2016/03/18 Python
django中send_mail功能实现详解
2018/02/06 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
五十岁生日宴会答谢词
2014/01/15 职场文书
中学教师请假制度
2014/02/03 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
法定代表人身份证明书
2014/09/10 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏