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 相关文章推荐
杏林同学录(五)
Oct 09 PHP
两个开源的Php输出Excel文件类
Feb 08 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
php自定义urlencode,urldecode函数实例
Mar 24 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
php随机获取金山词霸每日一句的方法
Jul 09 PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
PHP命令Command模式用法实例分析
Aug 08 PHP
PHP APP微信提现接口代码
Sep 30 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
Oct 18 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 已经成熟
2006/12/04 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
详解Python文本操作相关模块
2017/06/22 Python
详细分析python3的reduce函数
2017/12/05 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
中学生期末评语
2014/02/03 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
批评与自我批评范文
2014/10/15 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
慰问信格式
2015/02/14 职场文书
对象析构函数__del__在Python中何时使用
2022/03/22 Python
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android