我的需求:获取当前地址,温度和天气【微信小程序】
- 先获取当前经纬度uni.getLocation
- 获取经纬度以后,通过经纬度进行逆地理编码,获取当前定位地址uni.request
- 处理显示【“江西省南昌市红谷滩区沙井街道世茂路南昌市人民政府”】变成【“沙井街道世茂路南昌市人民政府”】(思路:获取【江西省南昌市红谷滩区】的长度,然后进行【江西省南昌市红谷滩区沙井街道世茂路南昌市人民政府】的截取,获取到【沙井街道世茂路南昌市人民政府】)
- 获取当前城市的天气情况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
有什么不懂的欢迎留言。
感谢观看,如果有帮助到你,希望给我点个赞赞哦。
马上端午了,最后祝愿大家端午快乐!!!