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 相关文章推荐
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
php中文字符串截取方法实例总结
Sep 30 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
php一维二维数组键排序方法实例总结
Nov 13 PHP
php去除数组中重复数据
Nov 18 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
php实现每天自动变换随机问候语的方法
May 12 PHP
twig里使用js变量的方法
Feb 05 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
php png失真的原因及解决办法
Nov 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
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
一个javascript参数的小问题
2008/03/02 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
python计算两个地址之间的距离方法
2018/06/09 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
Python实现代码统计工具
2019/09/19 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
财务部经理岗位职责
2014/02/03 职场文书
服务口号大全
2014/06/11 职场文书
房屋过户委托书范本
2014/10/07 职场文书
大队委员竞选稿
2015/11/20 职场文书
靠谱准确的求职信
2019/04/02 职场文书
python编写五子棋游戏
2021/05/25 Python