两个点 定位_基于GPS定位的“圈内答题”微信小程序

本文介绍了一个利用微信小程序实现的‘圈内答题’功能。用户扫描贴在特定地点的小程序码,小程序通过微信定位接口获取GPS坐标,判断是否在100米范围内。若在范围内,用户将看到并回答简单题目,答题结果会保存在服务器上。
摘要由CSDN通过智能技术生成
在许多场景中,都使用到了定位,比如上班打卡的时候需要在公司内进行,如果定位显示不在公司,则无法进行打卡。以此为启发,为了增加打卡的趣味性,开发了一个预埋答题点,以答题点为中心,100米半径为有效范围的答题小程序。 预埋答题点,若干个答题点组成一条线路, 这和核电厂里运行巡检路线有点相似了,在开发这个小程序的时候,极大程度上借鉴了在运行巡检路线的思想,而比巡检路线有所优化的地方是可以借助GPS定位确保人员一定是到达了预埋的答题点,这种强约束是在程序里固化下来的。 以设备定位或人员定位为核心的应用场景,关键需要解决定位的技术问题,在电厂厂区暂时解决不了定位的问题,所以之前的一些想法没有完全实现,通过这次微信小程序开发定位功能,算是把之前《工单地图》里的定位想法形成闭环。 预埋答题点

6f5559bc0df79268c918414bf1c30610.png

答题点实际上是一个GPS定位,通过小程序的地图组件可以标注出位置的经纬度坐标,在统一的标准坐标体系下,这个位置点是唯一的。在地图上选择一系列的位置,形成一条路线。 生成小程序码

d4df8135a03340d19af4c24b9269539a.png

生成小程序码,将小程序码贴在指定的位置,方便于用户扫描。使用微信的扫一扫功能,扫描之后直接接入到小程序页面,小程序页面通过微信定位接口获取到该手机所在的GPS位置,经过距离计算,确定是不是在100米半径范围的答题圈内,如果在,则显示答题的内容。

答题操作

这种场景主要是增加趣味性,所以题目都是一些非常简单的题目,从预先准备的一些题目中随机抽一道题目进行作答,在答对或答错后可以进行相应的奖励,如此完成一个闭环。

f3385c231c97b770e79b91148cbedb4f.png

选择答案,点击提交按钮,会有一次与服务器的交互,将本次答题记录保存在服务器上。

a5f5dc216601d72c1b7bba75f377c6a3.png

在逻辑上设置了每个月只允许在这个答题点答一次,如果检测到这个月内多次答题的话,这会出现答题无效的情况。

ccddc1e3142a460c2b860dd561071538.png

开发过程简要介绍 开发分为微信小程序开发和后端PHP程序开发。核心的计算两个点直接的距离算法如下:
distance: function (la1, lo1, la2, lo2) {    var La1 = la1 * Math.PI / 180.0;    var La2 = la2 * Math.PI / 180.0;    var La3 = La1 - La2;    var Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0;    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2) + Math.cos(La1) * Math.cos(La2) * Math.pow(Math.sin(Lb3 / 2), 2)));    s = s * 6378.137;    s = Math.round(s * 10000) / 10000;    s = s.toFixed(6);    return s;  },
后端PHP程序有一些数据库的操作,需要对传递的一些参数做好校验和过滤,杜绝安全方面的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值