定位地理位置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 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
PHP中的正规表达式(二)
Oct 09 PHP
PHP设计模式 注册表模式
Feb 05 PHP
PHP--用万网的接口实现域名查询功能
Dec 13 PHP
PHP计数器的实现代码
Jun 08 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
Jun 20 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
php实现比较全的数据库操作类
Jun 18 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
php array_key_exists() 与 isset() 的区别
Oct 24 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
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
PHP多进程编程实例详解
2017/07/19 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
js操作select控件的几种方法
2010/06/02 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Python的语言类型(详解)
2017/06/24 Python
Python根据成绩分析系统浅析
2019/02/11 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
python ubplot使用方法解析
2020/01/10 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
用Python开发app后端有优势吗
2020/06/29 Python
同程旅游英文网站:LY.com
2018/11/13 全球购物
请解释在new与override的区别
2012/10/29 面试题
给老师的一封建议书
2014/03/13 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python