定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内


Posted in PHP onMay 23, 2019

具体代码如下所述:

/* 计算两组经纬度坐标之间的距离
  * @param $lat1 纬度1
  * @param $lng1 经度1
  * @param $lat2 纬度2
  * @param $lng2 经度2
  * @param int $len_type 返回值类型(1-m 2-km)
  * @param int $decimal 保留小数位数
  * @return float
  */
  public function getDistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2)
  {
    $radLat1 = $lat1 * 3.1415926 / 180.0;
    $radLat2 = $lat2 * 3.1415926 / 180.0;
    $a = $radLat1 - $radLat2;
    $b = ($lng1 * 3.1415926 / 180.0) - ($lng2 * 3.1415926 / 180.0);
    $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
    $s = $s * 6378.137;
    $s = round($s * 1000);
    if ($len_type > 1) {
      $s /= 1000;
    }
    return round($s, $decimal);
  }

ps:下面看下根据经纬度判断签到范围是否在指定范围内

/**
  * 将角度换算为弧度
  * @param d 角度
  * @return 弧度
  */
 private static double rad(double d) {
     return d * Math.PI / 180.0;
 }
 
 /**
  * 先通过经纬度获取距离(单位:米),再判断一个点是否在圆形区域内(根据所给的半径坐比较)
  * @param n1=>app
   * @param n2=>仓库
  * @param radius
  * @return
  */
 public static boolean isInCircle(ZJPoint n1 ,ZJPoint n2,String radius){
  final double EARTH_RADIUS = 6378.137;////地球半径 (千米)
  double radLat1 = rad(n1.getX()!=null ? n1.getX().doubleValue():0);
   double radLat2 = rad(n2.getX()!=null ? n2.getX().doubleValue():0);
   double radLon1 = rad(n1.getY()!=null ? n1.getY().doubleValue():0);
   double radLon2 = rad(n2.getY()!=null ? n2.getY().doubleValue():0);
   //两点之间的差值
   double jdDistance = radLat1 - radLat2;
   double wdDistance = radLon1 - radLon2;
   double distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(jdDistance / 2), 2) +
         Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(wdDistance / 2), 2)));
   distance = distance * EARTH_RADIUS;
   distance = Math.round(distance * 10000d) / 10000d;
   distance = distance*1000;//将计算出来的距离千米转为米
   double r = Double.parseDouble(radius);
   //判断一个点是否在圆形区域内
   if (distance > r) {
       return false;
    }
  return true;
 }

总结

以上所述是小编给大家介绍的定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP编程网上资源导航
Oct 09 PHP
有关 PHP 和 MySQL 时区的一点总结
Mar 26 PHP
php采集时被封ip的解决方法
Aug 29 PHP
PHP 观察者模式的实现代码
May 10 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
PHP错误处理函数
Apr 03 PHP
PHP折半(二分)查找算法实例分析
May 12 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 PHP
Swoole4.4协程抢占式调度器详解
May 23 #PHP
PHP文件上传小程序 适合初学者学习!
May 23 #PHP
PHP观察者模式实例分析【对比JS观察者模式】
May 22 #PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 #PHP
在Laravel5中正确设置文件权限的方法
May 22 #PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 #PHP
thinkphp5框架API token身份验证功能示例
May 21 #PHP
You might like
php getsiteurl()函数
2009/09/05 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
删除重复数据的算法
2006/11/23 Javascript
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python中装饰器的一个妙用
2015/02/08 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
python实现简单神经网络算法
2018/03/10 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
python七夕浪漫表白源码
2019/04/05 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
超越自我演讲稿
2014/05/21 职场文书
迟到检讨书范文
2015/01/27 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
vue使用element-ui按需引入
2022/05/20 Vue.js