微信小程序实时定位的要做的那些事,你学废了吗?

发布时间:2022-06-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了微信小程序实时定位的要做的那些事,你学废了吗?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

微信小程序实时定位的要做的那些事,你学废了吗?

✅作者简介:大家好我是瓜子三百克,一个非科班出身的技术程序员,还是喜欢在学习和开发中记录笔记的博主小白! 📃个人主页:瓜子三百克的主页 🔥系列专栏:OC语法 🤟格言:作为一个程序员都应该认识到,好的代码是初级工程师都可以理解的代码, 伟大的代码是可以被学习一年计算机专业的新生所理解。 💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞 🔥系列文章:

1、微信小程序实时定位的要做的那些事,你学废了吗? 2、微信小程序也可以实现定位打卡/签到打卡了


开发框架:uniapp 本片文章主要实现了微信小程序的实时定位功能的小组件实现。

文章目录

  • 1、获取小程序是否开启定位授权,会吧?
  • 2、定位授权弹窗,会吧?
  • 3、开启定位监听,会吧?
  • 4、定位通知,会吧
  • 5、结束定位监控,会吧?
  • 6、然后来个买一送一,单次获取本地经纬度,没问题吧?
  • 7、写成一个组件抛出去,会吧?
  • 8、定位权限,会判断吧?

1、获取小程序是否开启定位授权,会吧?

function zmStartMonitor() {
	// #ifdef MP-WEIXIN
	return 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
}

2、定位授权弹窗,会吧?

function zmOpenConfirm() {
	// #ifdef MP-WEIXIN
	wx.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
}

3、开启定位监听,会吧?

function zmBeginLocation() {
	// #ifdef MP-WEIXIN
	wx.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
}

4、定位通知,会吧

/// 监控定位信息成功
function zmLocationSuc(res) {
	/* {
	"latitude":24.44579,
	"longitude":118.08243,
	"speed":-1,
	"accuracy":65,
	"verticalAccuracy":65,
	"horizontalAccuracy":65,
	"errMsg":"getLocation:ok"
	} */
	uni.$emit("iLocationSuc", res)
}

/// 监控定位信息失败
function zmLocationErr(err) {
	uni.$emit("iLocationErr", err)
}

/// 监控定位权限开关
function zmAuthorityOpen(e) {
	uni.$emit("iAuthorityOpen", e)
}

5、结束定位监控,会吧?

function zmEndMonitor() {
	// #ifdef MP-WEIXIN
	console.log("========zmEnd")
	wx.offLocationChange(function(res) {
		zmLocationSuc(res)
	});
	wx.offLocationChangeError(function(err) {
		zmLocationErr(err)
	});
	// #endif
}

6、然后来个买一送一,单次获取本地经纬度,没问题吧?

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);
						}
					});
				}
			}
		})
	})
}

7、写成一个组件抛出去,会吧?

export default {
	zmStartMonitor,
	zmEndMonitor,
	zmLocation,
}

8、定位权限,会判断吧?

小程序定位权限,除了要开启小程序的定位授权,还要开启app和微信应用的定位权限,否则无法获取定位信息,获取如下:

	const systemInfo = uni.getSystemInfoSync()
	// 模拟器没有这两个字段,设置默认打开
	if (systemInfo.locationEnabled != undefined &&
		systemInfo.locationAuthorized != undefined) {
		// 手机系统定位开关
		console.log("手机系统定位开关:", systemInfo.locationEnabled)
		// 微信app定位开关,如果手机系统定位关闭,那么微信app定位也会一起关闭
		console.log("微信应用定位开关:", systemInfo.locationAuthorized)
	}

最后,文件打包奉上。


**🏆结束语🏆 **

最后如果觉得我写的文章对您有帮助的话,欢迎点赞✌,收藏✌,加关注✌哦,谢谢谢谢!!

脚本宝典总结

以上是脚本宝典为你收集整理的微信小程序实时定位的要做的那些事,你学废了吗?全部内容,希望文章能够帮你解决微信小程序实时定位的要做的那些事,你学废了吗?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: