uniapp通过定位获取天气信息,以及获取对应的城市名称

简单记录一下uniapp如何通过定位获取天气信息,以及获取对应的城市名称,主要使用的是uni.getLocation()通过授权获取对应的定位信息,如果实在移动端的话可能还需要加一个授权的判断问题(可参考我的首页)

以下代码均可直接使用,只需要调用就可以(天气的需要获取自己对应的key)

一、获取天气信息(通过注册和风天气获取应用key值官网:登录 | 和风天气,注册好后通过创建项目获取对应key)

我这里使用的是和风天气的,当然高德等很快天气的api开放平台都可以使用

uni.getLocation({
				type: 'gcj02',
				success(res) {
					let longitude = res.longitude;
					let latitude = res.latitude;
					uni.request({
						url: `https://devapi.qweather.com/v7/weather/now?location=${longitude},${latitude}&key=你自己应用的key值`,
						method: 'GET',
						dataType: "json",
						success(res) {
							console.log(res)
						}
					})
				}
			})

二、通过获取到的经纬度信息转化所在地区

uni.getLocation({
				type: 'wgs84',
				success: function(res) {
					let longitude = res.longitude;
					let latitude = res.latitude;
					// 创建地图坐标对象
					var point = new plus.maps.Point(res.longitude, res.latitude);
					//静态方法,反向地理编码
					plus.maps.Map.reverseGeocode(point, {}, (event) => {
							console.log(event)
							var address = event.address; // 转换后的地理位置
							var point = event.coord; // 转换后的坐标信息
							var coordType = event.coordType; // 转换后的坐标系类型
							var reg = /.+?(省|市|自治区|自治州|县|区)/g;
							var addressList = address.match(reg).toString().split(",");
							//注意 因为存在直辖市, 当所在地区为普通省市时,addressList.length == 3,city = addressList[1];当所在地区为直辖市时addressList.length == 2,city = addressList[0];
							let city = addressList.length == 3 ? addressList[1] : addressList[0];
							console.log(addressList);
						},
						function(e) {
							console.log("失败回调", e);
						}
					);
				}
			});

猜你喜欢

转载自blog.csdn.net/A1123352950/article/details/134269087