定位地理位置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&java(三)
Oct 09 PHP
phpmyadmin 常用选项设置详解版
Mar 07 PHP
php购物车实现代码
Oct 10 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
Oct 30 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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 邮件发送问题解决
2014/03/22 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
php二维码生成
2015/10/19 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
广告切换效果(缓动切换)
2009/05/27 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
Python OpenCV实现视频分帧
2019/06/01 Python
python实现在一个画布上画多个子图
2020/01/19 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
python模块内置属性概念及实例
2021/02/18 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
优秀幼教自荐信
2014/02/03 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
撤诉申请怎么写
2015/05/19 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书