PHP实现判断员工打卡签到经纬度是否在打卡之内
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,本篇内容介绍了"PHP实现判断员工打卡签到经纬度是否在打卡之内"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2025年01月16日PHP实现判断员工打卡签到经纬度是否在打卡之内
本篇内容介绍了"PHP实现判断员工打卡签到经纬度是否在打卡之内"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
具体代码如下所述:
/* 计算两组经纬度坐标之间的距离 * @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实现判断员工打卡签到经纬度是否在打卡之内"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
经纬
经纬度
打卡
员工
之间
内容
区域
半径
圆形
弧度
更多
知识
纬度
经度
范围
角度
实用
学有所成
接下来
仓库
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
plsql数据库表加字段
软件开发怎么做到不加班
奉贤区信息软件开发网上价格
数据库需求分析采用的方法
青岛网络技术大会
泰国什么时候颁布网络安全法
互联网科技公司发展愿景
兰州远腾软件开发
网络安全法 要点
海南省村庄规划数据库标准
网络安全大作业引言
网络安全学科基础
网络安全之我见800字作文
计算机网络技术课程反馈
数据库与客户端版本号
山东网络技术
北京万户网络技术公司正规吗
网络安全论文 网络安全论文
苏州网络培训软件开发
广东标准网络技术服务代理商
东南亚软件开发
互联网科技项目融资
软件开发怎么做到不加班
济南软件开发app收费多少
大厂的服务器操作系统
对数据库表进行备份
web前端 软件开发
个人服务器api管理
出售网络安全漏洞的罪名
视频加速服务器下载