问题:
uniapp 内置方法uni.getLocation
在小程序中 只能获取到经纬度, 不能获取到具体的城市名称
uni.getLocation
: https://uniapp.dcloud.io/api/location/location
uni.getLocation({
type: 'wgs84',
success: function (res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
}
});
所以需要用经纬度获取相对应的城市名称(百度地图, 高德地图)
高德地图 : https://ask.dcloud.net.cn/article/35070
以下用的是百度地图的方法:
-
注册百度地图账号,获取ak
打开百度地图开放平台,导航栏处选择 “开发文档” > “微信小程序JavaScript API”,在“入门指南”处有详细介绍怎么生成密钥ak
具体操作请访问地址: http://lbsyun.baidu.com/index.php?title=wxjsapi/guide/key
查看ak: http://lbsyun.baidu.com/apiconsole/key#/home
-
使用小程序的账号登录微信公众平台(https://mp.weixin.qq.com/),在“开发” 中选择 “开发管理”,把百度地图api的url添加到request合法域名中
代码:
// 根据经纬度获取地名
location(latitude,longitude){
uni.request({
url: 'http://api.map.baidu.com/reverse_geocoding/v3/?ak=1rbWRy3RmGLeBB3KBj42FivR64PFejd3&location=' + latitude + ',' + longitude + '&output=json',
data: {},
header: {
'Content-Type': 'application.json'
},
success: res => {
console.log(res.data)
if(res && res.data){
let city = res.data.result.addressComponent.city
this.city = city.substr(0,city.length - 1)
}
}
})
}
打印结果