定位地理位置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 相关文章推荐
3种平台下安装php4经验点滴
Oct 09 PHP
PHP HTML代码串截取代码
Dec 29 PHP
php后门URL的防范
Nov 12 PHP
php简单的留言板与回复功能具体实现
Feb 19 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
Aug 21 PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
Oct 10 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 09 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 url 加密解密函数代码
2011/08/26 PHP
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Python3列表List入门知识附实例
2020/02/09 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
python 绘制国旗的示例
2020/09/27 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
单位工程竣工验收方案
2014/03/16 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
植物园观后感
2015/06/11 职场文书
独生子女证明范本
2015/06/19 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
使用tensorflow 实现反向传播求导
2021/05/26 Python