通过uniapp提供的uni.getLocation,获取当前的地理位置、速度。在微信小程序中只能获取到当前的经纬度,无法获取到当前所在的城市信息。
uni.getLocation({
type: 'wgs84',
geocode:true,
success: function (res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
}
});
我们发现只能返回经纬度信息,并不会返回城市信息。
我们发现有只有app才支持geocode。
接下来我们通过使用高德地图提供的逆地理编码,通过经纬度拿到当前的城市信息。
首先,我们先在控制台申请一个key
然后下载微信小程序插件
下载完成之后放入到项目中
这里需要把这个文件里面的最后的导出方式换成:
接下来我们就来实现通过经纬度获取当前的城市信息:
在页面中使用
uni.getLocation({
type: 'gcj02',
success: async (res) => {
//先通过uniapp提供的api获取经纬度
const { longitude, latitude } = res
const result = await wxGetAddress(longitude, latitude)
console.log("当前城市信息",result )
},
fail: (err) => {
console.log("获取位置信息失败", err)
}
})
看一下我们拿到的信息
这样我们就通过逆地理编码拿到了我们的城市信息。
接下来我们通过拿到的城市信息去获取天气信息
我们可以看到,我们需要传递一个城市编码的参数,这个参数我们在上一步的获取城市信息的数据中就可以拿到:
然后在页面中使用:
const city = result[0].regeocodeData.addressComponent.adcode
const result1 = wxGetWeather(city)
console.log("天气",result1)
我们就可以获取当前的天气了