洞察探索如何利用兼容微信生态的小程序容器,实现跨平台开发,助力金融和车联网行业的数字化转型。
1195
2023-11-12
哈喽,隔了几天没写文章,小编又回来了(✪ω✪)。最近接了一个校园的需求,主要功能是希望学生每天进行定位打卡,帮助班导确认学生是否在校的情况。
上面图片是大致的交互过程,定位打卡是个比较常见的功能了,只是很多时候都是在 APP 上完成的,这次需求方是希望专门做个小程序来使用,当然,整个小程序还有其他很多功能模块,本章我们先来分享一下定位打卡功能,前端具体需要做哪些事情。
首先,因为这次定位打卡功能使用的是 GPS 来定位的,这就需要获取用户的地理位置信息。在小程序中,要获取用户的地理位置,微信官方提供了部分 API ,但是这些 API 有权限要求,我们需要先登陆 小程序后台 去申请。
登陆后,按路径「开发」-「开发管理」-「接口设置」中找到相关 API ,填写你使用 API 的理由,提交申请即可。
本次的功能小编一共会使用到了以下两个 API :
wx.chooseLocation:用于打开微信小程序自带的地图,能选择一个位置,获取目标位置的经纬度。wx.getLocation:用于获取用户当前所在的地理位置信息,主要为了拿到经纬度;不过,这个 API 有点难申请通过,小编也是申请了三次才过的,真是挺麻烦-.-,好像一般小程序主体是政府、学校或者大企业等机构就比较容易通过(●—●)。API 权限申请好了后,我们就能进入正题了,开始正式的编码工作。
项目小编直接使用 uniapp 的 HBuilderX 工具创建的,并使用了@dcloudio/uni-ui 作为 UI 库。
定位打卡功能的具体交互过程很简单,先由管理人员选取学校的位置,获取到学校经纬度信息保存起来,然后学生每次打卡也会获取经纬度坐标,然后计算两个经纬度坐标的距离,就能推算出学生是否在校了。
项目初始化后,我们还需要进行一步很关键的配置声明,在项目的根目录下,找到 manifest.json 文件,进行如下配置:
主要是 requiredPrivateInfos 字段的配置,至于为什么可以看看官方说明,传送门 。
那么,接下来进行我们的第一步,选取学校的位置,代码比较简单,直接来看:
搞定完学校的位置后,接下来就要来获取学生的地理位置了,主要是使用 wx.chooseLocation 来获取。
不过,因为这个 API 初次调用时,会有一个主动询问动作。
如果你选择允许授权,那么后续你可以直接调用该 API,但是如果选择拒绝,那么调用该 API 就会直接进入错误的回调,并不会有再次主动询问的动作。
那么我们要如何重新授权呢?总不能拒绝后就不能使用了吧?
也就因为这么一个行为,我们还会牵扯出好几个权限相关的 API,才能完成整个权限的闭环操作。
wx.getSetting:获取用户的当前设置。wx.openSetting:调起用户的设置界面。wx.authorize:提前向用户发起授权请求。上面小编简单注释了每个 API 的作用,详细信息还是要参考官方文档为准。
然后,为了更好的组织代码,小编把权限这块相关的进行简单的封装,新建 /utils/location.js 文件:
具体的使用:
上面我们成功获取到用户的当前位置信息,当然,如果用户选择了拒绝,我们也提供了重新授权的方式。
上面我们已经拿到了学生用户的当前经纬度坐标了,本来我们接下来只要计算两个经纬度坐标之间的距离就能完成功能了,奈何需求方还想要学生具体位置的中文信息,这就比较麻烦了,唉,但是麻烦也得做,否则没饭吃呀-.-。
这个需求本质就是让我们把经纬度转成具体地址,这里需要使用额外的插件来处理,方式有很多,小编选择 腾讯的位置服务。
我们直接按照他官网的介绍操作即可。
具体使用:
具体位置也搞定后,就剩下最终的功能,计算两个经纬度坐标之间的距离,这听起来好像很难,但实际很简单,网上有大把现成的方法,我们直接抄个来耍就行了。
具体使用:
至此,本篇文章就写完啦,撒花撒花。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~