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 相关文章推荐
用session做客户验证时的注意事项
Oct 09 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
ThinkPHP实现多数据库连接的解决方法
Jul 01 PHP
采用memcache在web集群中实现session的同步会话
Jul 05 PHP
php中使用base HTTP验证的方法
Apr 20 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
Laravel5.1框架注册中间件的三种场景详解
Jul 09 PHP
php命令行模式代码实例详解
Feb 26 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中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
python实现根据月份和日期得到星座的方法
2015/03/27 Python
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
在pycharm中实现删除bookmark
2020/02/14 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
英语专业推荐信
2013/11/16 职场文书
公司门卫岗位职责
2014/03/15 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
创先争优个人总结
2015/03/04 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书