定位地理位置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语法(1)
Oct 09 PHP
zf框架db类的分页示例分享
Mar 14 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
将PHP的session数据存储到数据库中的代码实例
Jun 24 PHP
php将服务端的文件读出来显示在web页面实例
Oct 31 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
php生成二维码图片方法汇总
Dec 17 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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入门教程 精简版
2009/12/13 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
python解析json实例方法
2013/11/19 Python
深入Python函数编程的一些特性
2015/04/13 Python
Python通过select实现异步IO的方法
2015/06/04 Python
Django框架中方法的访问和查找
2015/07/15 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
如何通过jdbc调用存储过程
2012/04/19 面试题
中秋节礼品促销方案
2014/02/02 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android