定位地理位置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中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
Smarty安装配置方法
Apr 10 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
php获取新浪微博数据API实例
Nov 12 PHP
php实现webservice实例
Nov 06 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
php+html5基于websocket实现聊天室的方法
Jul 17 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 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下载文件的详解
2013/06/02 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
ECMAScript 基础知识
2007/06/29 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
JS画线(实例代码)
2013/11/20 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
javascript中Function类型详解
2015/04/28 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
房屋转让协议书范本
2014/04/11 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
四风查摆剖析材料
2014/10/10 职场文书
2014年消防工作总结
2014/11/21 职场文书
优秀团员自我评价
2015/03/10 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL