定位地理位置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 相关文章推荐
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
Aug 21 PHP
常见PHP数据库解决方案分析介绍
Sep 24 PHP
php导出生成word的方法
Dec 25 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
Referer原理与图片防盗链实现方法详解
Jul 03 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文件操作实现代码分享
2011/09/01 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
PHP线程的内存回收问题
2016/07/08 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
PHP实现简易blog的制作
2016/10/24 PHP
显示、隐藏密码
2006/07/01 Javascript
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
2016/10/21 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
基于DataFrame改变列类型的方法
2018/07/25 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
Python对列表的操作知识点详解
2019/08/20 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
异步传递消息系统的作用
2016/05/01 面试题
怎样写好自我评价呢?
2014/02/16 职场文书
质量管理标语
2014/06/12 职场文书
2015年试用期工作总结
2014/12/12 职场文书
长城的导游词
2015/01/30 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
入党群众意见范文
2015/06/02 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
使用Python开发冰球小游戏
2022/04/30 Python
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL