简单记录一下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);
}
);
}
});