定位地理位置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分页函数
Oct 09 PHP
php 什么是PEAR?(第三篇)
Mar 19 PHP
使用php来实现网络服务
Sep 15 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php去除数组中重复数据
Nov 18 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
PHP中使用Imagick实现各种图片效果实例
Jan 21 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 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基础知识:控制结构
2006/12/13 PHP
PHP中的替代语法介绍
2015/01/09 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
Python程序中设置HTTP代理
2016/11/06 Python
python简单商城购物车实例代码
2018/03/15 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
单位人事专员介绍信
2014/01/11 职场文书
模具毕业生推荐信
2014/02/15 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
课外访万家心得体会
2014/09/03 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
团员年度个人总结
2015/02/26 职场文书
医生辞职信范文
2015/03/02 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL
讲解MySQL增删改操作
2022/05/06 MySQL