✅作者简介:大家好我是瓜子三百克,一个非科班出身的技术程序员,还是喜欢在学习和开发中记录笔记的博主小白! 📃个人主页:瓜子三百克的主页 🔥系列专栏:OC语法
✅作者简介:大家好我是瓜子三百克,一个非科班出身的技术程序员,还是喜欢在学习和开发中记录笔记的博主小白!
📃个人主页:瓜子三百克的主页
🔥系列专栏:OC语法
🤟格言:作为一个程序员都应该认识到,好的代码是初级工程师都可以理解的代码, 伟大的代码是可以被学习一年计算机专业的新生所理解。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞
🔥系列文章:
开发框架:uniapp
本片文章主要实现了微信小程序的实时定位功能的小组件实现。
function zmStartMonitor() {// #ifdef MP-WEIXINreturn new Promise((resolve, reject) => {wx.getSetting({success: (res) => {// 查看位置权限的状态 如果是首次授权(undefined)或者之前拒绝授权(false) //!res.authSetting['scope.userLocation']if (res.authSetting['scope.userLocation'] == false) {//之前拒绝授权(false)zmAuthorityOpen(false)zmOpenConfirm()} else {//如果是首次授权则弹出授权窗口进行授权,如果之前进行了授权,则获取地理位置信息zmBeginLocation()}resolve(res)},fail: (err) => {console.log("getSetting_err:", JSON.stringify(err))zmAuthorityOpen(false)reject(err)}})})// #endif}
function zmOpenConfirm() {// #ifdef MP-WEIXINwx.showModal({content: '检测到您没打开定位权限,是否去设置打开?',confirmText: "确认",cancelText: "取消",success: function(res) {console.log(res);//点击“确认”时打开设置页面if (res.confirm) {console.log('用户点击确认')wx.openSetting({success: (res) => {zmBeginLocation()}})} else {console.log('用户点击取消')zmAuthorityOpen(false)}}});// #endif}
function zmBeginLocation() {// #ifdef MP-WEIXINwx.startLocationUpdate({type: "GCj02",success(res) {zmAuthorityOpen(true)console.log("startLocation_suc: " + jsON.stringify(res));},fail(err) {zmAuthorityOpen(false)console.error("startLocation_err: " + JSON.stringify(err));},})wx.onLocationChange(function(res) {zmLocationSuc(res)});wx.onLocationChangeError(function(res) {zmLocationErr(res)});// #endif}
/// 监控定位信息成功function zmLocationSuc(res) {uni.$emit("iLocationSuc", res)}/// 监控定位信息失败function zmLocationErr(err) {uni.$emit("iLocationErr", err)}/// 监控定位权限开关function zmAuthorityOpen(e) {uni.$emit("iAuthorityOpen", e)}
function zmEndMonitor() {// #ifdef MP-WEIXINconsole.log("========zmEnd")wx.offLocationChange(function(res) {zmLocationSuc(res)});wx.offLocationChangeError(function(err) {zmLocationErr(err)});// #endif}
function zmLocation() {return new Promise((resolve, reject) => {uni.getSetting({success: (res) => {// 查看位置权限的状态 如果是首次授权(undefined)或者之前拒绝授权(false) //!res.authSetting['scope.userLocation']if (res.authSetting['scope.userLocation'] == false) {uni.authorize({success(res) {/// 获取当前的地理位置、速度。uni.getLocation({type: 'gcj02',success: function(res) {resolve(res)},fail: function(err) {reject(err);}});},fail(err) {reject(err);}})} else {//如果是首次授权则弹出授权窗口进行授权,如果之前进行了授权,则获取地理位置信息/// 获取当前的地理位置、速度。uni.getLocation({type: 'gcj02',success: function(res) {resolve(res)},fail: function(err) {reject(err);}});}}})})}
export default {zmStartMonitor,zmEndMonitor,zmLocation,}
小程序定位权限,除了要开启小程序的定位授权,还要开启app和微信应用的定位权限,否则无法获取定位信息,获取如下:
const systemInfo = uni.getSystemInfoSync()// 模拟器没有这两个字段,设置默认打开if (systemInfo.locationEnabled != undefined &&systemInfo.locationAuthorized != undefined) {// 手机系统定位开关console.log("手机系统定位开关:", systemInfo.locationEnabled)// 微信app定位开关,如果手机系统定位关闭,那么微信app定位也会一起关闭console.log("微信应用定位开关:", systemInfo.locationAuthorized)}
最后,文件打包奉上。
源码/demo展示:
1、gitee:https://gitee.com/chenzm_186/demo-real-time-location-mini
2、csdn:https://download.csdn.net/download/weixin_38633659/85436545
**🏆结束语🏆 **
最后如果觉得我写的文章对您有帮助的话,欢迎点赞✌,收藏✌,加关注✌哦,谢谢谢谢!!
来源地址:https://blog.csdn.net/weixin_38633659/article/details/124586661
--结束END--
本文标题: 微信小程序实时定位的要做的那些事,你学废了吗?(附示例)
本文链接: https://lsjlt.com/news/392015.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0