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 相关文章推荐
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
认识并使用PHP超级全局变量
Jan 26 PHP
10 个经典PHP函数
Oct 17 PHP
php递归获取目录内文件(包含子目录)封装类分享
Dec 25 PHP
php合并数组中相同元素的方法
Nov 13 PHP
php数组添加元素方法小结
Dec 20 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
YII框架页面缓存操作示例
Apr 29 PHP
php数组和链表的区别总结
Sep 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/03/07 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
Python爬取qq空间说说的实例代码
2018/08/17 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
学生手册家长评语
2014/02/10 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang
Java线程的6种状态与生命周期
2022/05/11 Java/Android