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编写大型网站问题集
Mar 06 PHP
php GeoIP的使用教程
Mar 09 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
div li的多行多列 无刷新分页示例代码
Oct 16 PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
两种php实现图片上传的方法
Jan 22 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
Apr 22 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
PHP微信模板消息操作示例
Jun 29 PHP
Laravel框架实现简单的学生信息管理平台案例
May 07 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 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小偷的核心程序
2007/04/09 PHP
PHP简洁函数小结
2011/08/12 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
laravel安装和配置教程
2014/10/29 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
Python 操作 MySQL数据库
2020/09/18 Python
波兰珠宝品牌:YES
2019/08/09 全球购物
什么是View State?
2013/01/27 面试题
高中生家长会演讲稿
2014/01/14 职场文书
社区国庆节活动方案
2014/02/05 职场文书
函授自我鉴定范文
2014/02/06 职场文书
大学生实训报告总结
2014/11/05 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
家长会主持词开场白
2015/05/29 职场文书
导游词之无锡梅园
2019/11/28 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL