微信小程序打卡定位实现方案

时间:2024-10-04 09:09:08

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