php如何计算两坐标点之间的距离


Posted in PHP onDecember 29, 2018

本文实例为大家分享了php计算两坐标点之间距离的实现代码,供大家参考,具体内容如下

地球上两个点之间,可近可远。

当比较近的时候,可以忽略球面因素,当做是一个平面,这样就有了两种计算方法。

//两点间距离比较近
function getDistance($lat1, $lng1, $lat2, $lng2) 
{ 
 $earthRadius = 6367000; //地球半径m

 $lat1 = ($lat1 * pi() ) / 180; 
 $lng1 = ($lng1 * pi() ) / 180; 

 $lat2 = ($lat2 * pi() ) / 180; 
 $lng2 = ($lng2 * pi() ) / 180; 

 $calcLongitude = $lng2 - $lng1; 
 $calcLatitude = $lat2 - $lat1; 
 $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2); 
 $stepTwo = 2 * asin(min(1, sqrt($stepOne))); 
 $calculatedDistance = $earthRadius * $stepTwo; 

 return round($calculatedDistance); 
} 

//两点间距离比较远
function getLongDistance($lat1, $lng1, $lat2,$lng2,$radius = 6378.137)
{
 $rad = floatval(M_PI / 180.0);

 $lat1 = floatval($lat1) * $rad;
 $lng1 = floatval($lng1) * $rad;
 $lat2 = floatval($lat2) * $rad;
 $lng2 = floatval($lng2) * $rad;

 $theta = $lng2 - $lng1;

 $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta));

 if ($dist < 0 ) {
  $dist += M_PI;
 }
 return $dist = $dist * $radius;
}

小编再为大家分享一段php坐标之间距离的求解代码:

<?php 
 define('EARTH_RADIUS', 6378.137);//地球半径 
 define('PI', 3.1415926); 
 /** 
 * 计算两组经纬度坐标 之间的距离 
 * params :lat1 纬度1; lng1 经度1; lat2 纬度2; lng2 经度2; len_type (1:m or 2:km); 
 * return m or km 
 */ 
 function GetDistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2) 
 { 
 $radLat1 = $lat1 * PI / 180.0; 
 $radLat2 = $lat2 * PI / 180.0; 
 $a = $radLat1 - $radLat2; 
 $b = ($lng1 * PI / 180.0) - ($lng2 * PI / 180.0); 
 $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2))); 
 $s = $s * EARTH_RADIUS; 
 $s = round($s * 1000); 
 if ($len_type > 1) 
 { 
 $s /= 1000; 
 } 
 return round($s, $decimal); 
 } 
 echo GetDistance(39.908156,116.4767, 39.908452,116.450479, 1);//输出距离/米

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
递归列出所有文件和目录
Oct 09 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 PHP
php文件上传表单摘自drupal的代码
Feb 15 PHP
mysql_num_rows VS COUNT 效率问题分析
Apr 23 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
destoon数据库表说明汇总
Jul 15 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
Aug 23 PHP
php获取url参数方法总结
Nov 13 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
Dec 10 PHP
php设计模式之装饰模式应用案例详解
Jun 17 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
CI框架网页缓存简单用法分析
Dec 26 #PHP
You might like
多文件上载系统完整版
2006/10/09 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
jquery each()源代码
2011/02/14 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
用canvas显示验证码的实现
2020/04/10 HTML / CSS
介绍一下Ruby的特点
2013/01/20 面试题
给女朋友的道歉信
2014/01/10 职场文书
父亲节活动策划方案
2014/08/24 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android