解决微信小程序获取不到用户地址问题

218 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

最基本的分析

首先分析三部分:
key值是否申请
api调用是否正确
调用失败的错误码

正常来说,很多人用uniapp开发的时候,用的都是uni的方法,其实还是要做兼容微信的方法

uni.getLocation({
				type: 'wgs84',
				success: function (res) {
					//这里去调用坐标转城市的高德API
					let location = '&location=' + res.longitude + ',' + res.latitude;
					that.$util.getLocationInfo(location).then(resolve => {
						let data = {
							adcode: resolve[0].regeocodeData.addressComponent.adcode
						};
						convert(data).then(res => {
							//that.formData.getMerchantACInformation.bankAddr = res.data.name + res.data.districts[0].name + res.data.districts[0].districts[0].name;
							that.formData.getMerchantACInformation.bankAddr = res.data.name + res.data.districts[0].name;
							that.formData.getMerchantACInformation.cityNo = res.data.districts[0].code;
						});
						// console.log(resolve.data.regeocode.addressComponent.adcode, '结果');
					});
				},
				fail: function () {
					uni.showToast({
						title: '获取地址失败,请开启位置权限',
						icon: 'none'
					});
				}

获取到经纬度之后调用高德api

// 获取高德逆地理编码
method.getLocationInfo = (location) => {
        // 高德地图API,经纬度转位置信息
        const key = '598eafad8cd0fe064e9ff340d6ce9cde'; //高德key秘钥,这里去高德申请一个就可以,其他都一样
        let reqUrl = 'https://restapi.amap.com/v3/geocode/regeo?key=' + key + location;

        return  new Promise((resolve, reject) => {

			let amapPlugin = new amap.AMapWX({
				key:key
			});	
			amapPlugin.getRegeo({
				success: data => {
				 resolve(data);
				},
                fail: err => {
                    resolve(err);
                }
			});

        });
    }

然后封装的方法,这里的key一定要选择勾选小程序的,不然就会失效