1背景
业务场景是考勤打卡,在考勤打卡这个业务场景中有两个关键技术点:定位和人员识别。用户界面初步确定是用微信小程序来实现,本文就定位问题做了技术上的调研。
2调研内容
-
平台注意事项
-
获取位置
-
选择位置
-
查看位置
-
距离计算
-
定位精度
-
防作弊
-
Demo
3调研结果
3.1平台注意事项
-
类目选择:注册小程序时,选择合适的类目,因为关于位置的API,只针对特定的类目开放
3.2获取位置
(Object object)
使用说明
/miniprogram/dev/api/location/
3.3 选择位置
(Object object)
使用说明
/miniprogram/dev/api/location/
3.4查看位置
(Object object)
使用说明
/miniprogram/dev/api/location/
3.5距离计算
距离计算用于计算由经纬度确定的两点之间的距离,有两个方法:
微信小程序 JavaScript SDK和开源库工具()。考虑到成本,选择来实现距离计算。
微信小程序 JavaScript SDK(收费)
/miniProgram/jsSdk/jsSdkGuide/methodCalculatedistance
(开源MIT协议)
npm
在小程序中使用需要npm支持,npm具体用法如下:
/miniprogram/dev/devtools/
@turf/distance
考虑到小程序代码的大小,最好按需引用Turf的模块,目前只需要用到@turf/distance模块,这个模块内部依赖了@turf/helpers,安装@turf/distance时会自动安装。
备注:@turf/distance内部采用Haversine公式,在位置服务领域广泛运用
3.6定位精度
根据测试效果:还是比较精确,跟微信中发送定位功能的定位效果差不多,定位精度在10-100米。
3.7防作弊
官方未明确声明可以防作弊。理论上讲,虚拟定位软件是属于系统级软件,应用程序是难以防止虚拟定位的。
网上资料:不能防止虚拟定位软件作弊。
3.8 Demo 代码地址
3.9 查看打卡位置是否在打卡范围中
map组件
坐标转换
百度坐标转腾讯坐标,其实就是是BD09坐标系转GCJ02坐标系
资料
地理位置使用流程:
/community/develop/doc/000a02f2c5026891650e7f40351c01