新手一枚,在此讨教各位前辈一个问题。
最近在做微信企业号的考勤签到签退功能,现在服务器后台已经可以接收到微信用户发送过来的地理位置(经纬度),本人的需求是用户只允许在常驻办公室区域(假设办公室很大,几百个平方,在这区域内都可签到签退,区域外则不允许)的地理位置进行签到签退。
根据获取用户返回的经纬度用什么办法判断其能否允许签到签退?
假如采用在数据库存储员工的办公地点地理位置信息然后与其返回的经纬度进行比较的方法判断,可这办公地点很大,地理位置信息怎么样存储?判断又怎么样判断?
最近在做微信企业号的考勤签到签退功能,现在服务器后台已经可以接收到微信用户发送过来的地理位置(经纬度),本人的需求是用户只允许在常驻办公室区域(假设办公室很大,几百个平方,在这区域内都可签到签退,区域外则不允许)的地理位置进行签到签退。
根据获取用户返回的经纬度用什么办法判断其能否允许签到签退?
假如采用在数据库存储员工的办公地点地理位置信息然后与其返回的经纬度进行比较的方法判断,可这办公地点很大,地理位置信息怎么样存储?判断又怎么样判断?
解决方案
40
获取到的地理位置 假如是使用移动网络则是通过计算基站位置来确认位置(没有打开GPS) 一般而言是通过3个基站做三角定位确定位置的
因此可以首先确认附近基站的位置 绘制一个圆形区域 获取圆形区域的圆心坐标的经纬度和园的半径 获取一个员工的位置后 你可以计算这个位置到圆心的长度 与 园半径比较 假如大于园的半径 则不在区域
不过这个方式准确度不高 仅作参考
因此可以首先确认附近基站的位置 绘制一个圆形区域 获取圆形区域的圆心坐标的经纬度和园的半径 获取一个员工的位置后 你可以计算这个位置到圆心的长度 与 园半径比较 假如大于园的半径 则不在区域
不过这个方式准确度不高 仅作参考