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 相关文章推荐
打造计数器DIY三步曲(下)
Oct 09 PHP
台湾中原大学php教程孙仲岳主讲
Jan 07 PHP
PHP安全技术之 实现php基本安全
Sep 04 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 PHP
PHP中将数组转成XML格式的实现代码
Aug 08 PHP
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
浅谈php和js中json的编码和解码
Oct 24 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
解析php多线程下载远程多个文件
2013/06/25 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
javascript帧动画(实例讲解)
2017/09/02 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
js代码实现轮播图
2020/05/04 Javascript
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
python实现在pickling的时候压缩的方法
2014/09/25 Python
Python列表计数及插入实例
2014/12/17 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
.net笔试题
2014/03/03 面试题
建房协议书
2014/04/11 职场文书
节能环保演讲稿
2014/08/28 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
车队安全员岗位职责
2015/02/15 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
党小组考察意见
2015/06/02 职场文书
详解MySQL的内连接和外连接
2023/05/08 MySQL