uniapp中使用高德地图获取详细地址

// 页面中使用
export default {
    data() {
        return {
            addressInfo: null
        }
    },
    methods: {
            /**
             * 获取当前位置详细地址
             * @returns {Promise} 返回地址信息
            */
            const getLocation = () => {
                return new Promise((resolve, reject) => {
                    uni.getLocation({
                    type: 'gcj02', // 使用高德地图坐标系
                    success: async (res) => {
                        try {
                            const address = await this.getAddressInfo(res.longitude, res.latitude);
                            resolve(address);
                        } catch (error) {
                            reject(error);
                        }
                    },
                    fail: (err) => {
                        reject(err);
                    }
                });
            });
        },

        /**
         * 根据经纬度获取详细地址
         * @param {number} longitude - 经度
         * @param {number} latitude - 纬度
         * @returns {Promise} 返回地址详情
         */
        const getAddressInfo = (longitude, latitude) => {
            return new Promise((resolve, reject) => {
                uni.request({
                    url: 'https://restapi.amap.com/v3/geocode/regeo',
                    method: 'GET',
                    data: {
                        key: '你的高德地图Key',
                        location: `${longitude},${latitude}`,
                        extensions: 'all',
                        output: 'json'
                    },
                    success: (res) => {
                        if (res.data.status === '1') {
                            resolve(res.data.regeocode);
                        } else {
                            reject(new Error('获取地址信息失败'));
                        }
                    },
                    fail: (err) => {
                        reject(err);
                    }
                });
            });
        },
        async getAddress() {
            try {
                uni.showLoading({
                    title: '获取位置中...'
                });
                
                const address = await this.getLocation();
                this.addressInfo = {
                    formatted_address: address.formatted_address, // 完整地址
                    province: address.addressComponent.province, // 省份
                    city: address.addressComponent.city, // 城市
                    district: address.addressComponent.district, // 区县
                    street: address.addressComponent.street, // 街道
                    streetNumber: address.addressComponent.streetNumber, // 门牌号
                    township: address.addressComponent.township, // 乡镇
                    pois: address.pois // 周边兴趣点
                };
                
                uni.hideLoading();
            } catch (error) {
                uni.hideLoading();
                uni.showToast({
                    title: '获取位置失败',
                    icon: 'none'
                });
                console.error(error);
            }
        }
    }
}

配置说明:

1,manifest.json配置:
{
    "permission": {
        "scope.userLocation": {
            "desc": "您的位置信息将用于获取当前位置" 
        }
    }
}

2,微信小程序配置(app.json):
{
    "permission": {
        "scope.userLocation": {
            "desc": "您的位置信息将用于获取当前位置"
        }
    }
}

3,高德开放平台配置:
// 需要在高德开放平台申请的配置信息
const config = {
    key: '你的key',
    securityJsCode: '你的安全密钥' // 如果需要的话
}

如果看完后对您有所启发,麻烦您点赞收藏!!!