定位地理位置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
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
php不用正则采集速度探究总结
Mar 24 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
Mar 18 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
Sep 01 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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之第三天
2006/10/09 PHP
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php flv视频时间获取函数
2010/06/29 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
JScript中的"this"关键字使用方式补充材料
2007/03/08 Javascript
javascript radio 联动效果
2009/03/04 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
Python实现Restful API的例子
2019/08/31 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
linux面试题参考答案(10)
2013/11/04 面试题
片区教研活动总结
2014/07/02 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
预备党员党支部意见
2015/06/02 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
导游词之太湖
2019/10/08 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis