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将数据导入到Foxmail的实现代码
Sep 05 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
跟我学Laravel之快速入门
Oct 15 PHP
用 Composer构建自己的 PHP 框架之构建路由
Oct 30 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
php随机取mysql记录方法小结
Dec 27 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
Sep 30 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 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 清除网页病毒的方法
2008/12/05 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
EsLint入门学习教程
2017/02/17 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
Python中的ConfigParser模块使用详解
2015/05/04 Python
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
Python函数式编程
2017/07/20 Python
python写一个md5解密器示例
2018/02/23 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
董事长秘书岗位职责
2013/11/29 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
会计岗位职责
2015/02/03 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB