定位地理位置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 相关文章推荐
一个简单的自动发送邮件系统(一)
Oct 09 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
php实现文件下载更能介绍
Nov 23 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
PHP经典面试题集锦
Mar 19 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
Laravel框架使用Redis的方法详解
May 30 PHP
基于swoole实现多人聊天室
Jun 14 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 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+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
php报错502badgateway解决方法
2019/10/11 PHP
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
python局域网ip扫描示例分享
2014/04/03 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
Python环境变量设置方法
2016/08/28 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
python 写一个性能测试工具(一)
2020/10/24 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
Python如何定义一个函数
2015/09/01 面试题
英文自荐信
2013/12/15 职场文书
美发店5.1活动方案
2014/01/24 职场文书
客服部工作职责范本
2014/02/14 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
element多个表单校验的实现
2021/05/27 Javascript