uni-app getLocation无address解决偏方

uni-app本身有获取地址的接口,点击前往

这个接口首先需要开放位置权限,具体就是android需要打开gprs,ios需要允许应用在使用期间使用地址

不过此时成功的回调地址参数打印并不包含longitude和latitude,应该是在父类里吧这个我没有深究。此时理论上会有address可以直接取到省市区,但是我并没有取到,原因不明,只能采用偏方根据经纬度再调百度或者腾讯地图的接口获取

考虑到部分功能需要发线上测试所以vconsole的npm包还是不可获取的

微信浏览器作为H5端有2种快捷的方法可以获取经纬度,一种是uni自带的功能

uni.getLocation({
	type: 'wgs84',
	success: (res) => { // longitude latitude在res对象里不显示
	    console.log(res)
	    console.log('当前位置的经度:' + res.longitude);
	    console.log('当前位置的纬度:' + res.latitude);
	    console.log(res.address) // 取不到
	    this.getCity(res.latitude, res.longitude)
    },
	fail: (res) => {
	    this.util.message('地址信息获取失败请打开GPRS权限')
	}
});

第二种是微信认证获取,此方法较为复杂,切需要后端人员辅助

需要后端配合返回appId,timestamp,nonceStr,signature四个字段

然后需要安装依赖包jweixin-module,每个页面获取都需重新配置config才可调用功能

jweixin.config({
	debug: false,
	appId: res.appId,
	timestamp: res.timestamp,
	nonceStr: res.nonceStr,
	signature: res.signature,
	jsApiList: [
		'getLocation'
	]
})
getLocation: function(res, callback) {
	this.init(res)
	jweixin.ready(function(){
		jweixin.getLocation({
			type: 'wgs84', 
			success: function (r) {
				console.log('success')
				callback(r)
			}
		})
	})
}

最后就是很成熟的经纬度获取地址的逆地址解析,百度和腾讯的都可以,不过需要注意的是微信公众号前端页面是不可以打开一个不在开发设置白名单内的请求的。请求status会是0,这边依旧需要从后端发起http请求,腾讯地图的控制台中需要在key管理-设置中勾选WebServiceAPI,并授权发起服务的服务器ip

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值