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 at(@)符号的用法简介
Jul 11 PHP
php 分库分表hash算法
Nov 12 PHP
PHP调用Webservice实例代码
Jul 29 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
php使用GD实现颜色渐变实例
Jun 02 PHP
zen_cart实现支付前生成订单的方法
May 06 PHP
XHProf报告字段含义的解析
May 17 PHP
CI框架文件上传类及图像处理类用法分析
May 18 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
Nov 21 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
浅谈php的TS和NTS的区别
Mar 13 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
header()函数使用说明
2006/11/23 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
深入理解vue中的$set
2017/06/01 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
JS实现密码框效果
2020/09/10 Javascript
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
python switch 实现多分支选择功能
2020/12/21 Python
《王二小》教学反思
2014/02/27 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
小学教师培训方案
2014/06/09 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
降价通知函
2015/04/23 职场文书
Python使用scapy模块发包收包
2021/05/07 Python