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基础知识:类与对象(5) static
Dec 13 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php操作xml入门之xml标签的属性分析
Jan 23 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
基于ThinkPHP实现批量删除
Dec 18 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
如何通过PHP实现Des加密算法代码实例
May 09 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
May 29 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中解析带中文字符的url函数分享
2015/01/20 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
url地址自动加#号问题说明
2010/08/21 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
小学教师的自我评价范例
2013/10/31 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
高考学习决心书
2015/02/04 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
python简单验证码识别的实现过程
2021/06/20 Python
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python