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 相关文章推荐
深入了解php4(2)--重访过去
Oct 09 PHP
php email邮箱正则
Oct 08 PHP
php strrpos()与strripos()函数
Aug 31 PHP
浅析php工厂模式
Nov 25 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
Yii快速入门经典教程
Dec 28 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
PHP defined()函数的使用图文详解
Jul 20 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
获取远程文件大小的php函数
2010/01/11 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
java直接调用python脚本的例子
2014/02/16 Python
Python实现把回车符\r\n转换成\n
2015/04/23 Python
Python导入oracle数据的方法
2015/07/10 Python
Django 静态文件配置过程详解
2019/07/23 Python
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
J2EE模式面试题
2016/10/11 面试题
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
腾讯广告词
2014/03/19 职场文书
投资入股合作协议书
2014/10/28 职场文书
大学生见习报告范文
2014/11/03 职场文书
英语辞职信范文
2015/02/28 职场文书
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python