如何获取当前地址以及天气温度情况,适用于微信小程序(端午假期将至,祝愿大家端午快乐)

在这里插入图片描述
我的需求:获取当前地址,温度和天气【微信小程序】

  1. 先获取当前经纬度uni.getLocation
  2. 获取经纬度以后,通过经纬度进行逆地理编码,获取当前定位地址uni.request
  3. 处理显示【“江西省南昌市红谷滩区沙井街道世茂路南昌市人民政府”】变成【“沙井街道世茂路南昌市人民政府”】(思路:获取【江西省南昌市红谷滩区】的长度,然后进行【江西省南昌市红谷滩区沙井街道世茂路南昌市人民政府】的截取,获取到【沙井街道世茂路南昌市人民政府】)
  4. 获取当前城市的天气情况uni.request

在这里插入图片描述图1

在这里插入图片描述图2
在这里插入图片描述图3
在这里插入图片描述图4

var _this = this
uni.getLocation({
	type: 'gcj02', //返回可以用于uni.openLocation的经纬度
	success: (res) => {
		//-------------------------这里可以看图2打印
		console.log('当前位置的经度:' + res.longitude);
		console.log('当前位置的纬度:' + res.latitude);
		uni.request({
			header: {
				"Content-Type": "application/text"
			},
			//注意:这里的key值需要高德地图的 web服务生成的key  只有web服务才有逆地理编码
			url: 'https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=' 
				+ res.longitude + ',' + res.latitude 
				+ '&key=你的秘钥&radius=1000&extensions=all',
			success(re) {
				if (re.statusCode === 200) {
					//-------------------------这里可以看图2打印
					console.debug('re.statusCode === 200', re)
					var {
						formatted_address
					} = re.data.regeocode
					//-------------------------这里可以看图3打印
					console.debug('re.data.regeocode ========', re.data.regeocode)
					// 这里是为了处理显示,我不想显示前面的省市区,然后就需要把省市区拿出来再和原有的进行对比
					//-------------------------这里可以看图4打印
					var reg = /.+?(省|市|自治区|自治州|县|区)/g;
					let addressList = formatted_address.match(reg).toString().split(",");
					console.debug('addressList ========', addressList)
					var shopAddress = addressList[0] + addressList[1] + addressList[2]
					console.debug('shopAddress获取具体的省市区 ========', shopAddress)
					// 1.截取省市区的长度,相同地方的东西
					var length = shopAddress.length
					// 2.然后从不同的地方进行截取,和拿到的数据进行比较处理
					_this.city = formatted_address.substring(length)
					console.debug('_this.city简写处理 ========', _this.city)
					//这里打印的是南昌市
					console.debug('addressList[1]', addressList[1])
				} else {
					//如果失败了,就重新请求这个方法
					uni.showModal({
						title: '提示',
						content: "获取信息失败,请重试!",
						confirmText: '重试',
						success: function(res) {
							if (res.confirm) {
								//这就是本方法getLocation
								_this.getLocation()
							}
						}
					});
					console.log("获取信息失败,请重试!")
				}
			}
		});
	}
});

获取当前城市的天气温度
在这里插入图片描述图5

//这里其实我是为了判断是否有城市,我是结合上面的来做的,这里为了更好地给你们看,所以抽取出来了。
if (addressList[1]) {
	//这里打印的是南昌市,通过城市进行获取当前城市的一些信息
	console.debug('addressList[1]', addressList[1])
	uni.request({
		url: 'http://wthrcdn.etouch.cn/weather_mini?city=' +
			addressList[1],
		data: {},
		responseType: 'application/json;charset=utf-8',
		success: (res) => {
			console.debug('res ========', res)
			//-------------------------这里可以看图5打印
			console.debug('res.data ========', res.data)
			var {
				forecast,
				ganmao,
				wendu,
				yesterday,
				city
			} = res.data.data
			//获取当前的温度,注意:这里不是实时更新的,是你请求一次就更新一次
			_this.temperature = wendu + "℃"
			//获取当天的天气【阴】,forecast这里是个数组,显示的是未来5天的天气情况(包括今天)
			//所以如果我需要当天的天气【阴】,这里就要forecast[0]
			_this.weather = forecast[0].type
		}
	})
}

对于地址那块如有不懂的可参考:https://blog.csdn.net/qq_42899245/article/details/117732620?spm=1001.2014.3001.5502
有什么不懂的欢迎留言。
感谢观看,如果有帮助到你,希望给我点个赞赞哦。
马上端午了,最后祝愿大家端午快乐!!!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42899245/article/details/117783331