uni-app 小程序授权获取当前位置信息

onShow() {
           if (uni.getStorageSync('user_location_info')) {
            //2是区级
            this.city = uni.getStorageSync('user_location_info').address[2];
            //保存定位信息
            this.latitude = uni.getStorageSync('user_location_info').latitude;
            this.longitude = uni.getStorageSync('user_location_info').longitude;
        } else {
            //vuex中不存在地址数据--进行地址信息请求
            this.getAuthorizeInfo();
            this.getLocation()
        }
    },
methods: {
              // 位置授权
              getAuthorizeInfo(){
                    const that = this;
                    uni.authorize({
                        scope: 'scope.userLocation',
                        success() { // 允许授权
                            that.getLocationInfo();
                        },
                        fail(){    // 拒绝授权
                            that.openConfirm();
                            // console.log("你拒绝了授权,无法获得周边信息")
                        }
                    })
                },
                // 获取地理位置
                getLocationInfo(){  
                    uni.getLocation({
                        type: 'wgs84',
                        success (res) {
                            // console.log(res);
                        }
                    });
                },
                // 再次获取授权
                // 当用户第一次拒绝后再次请求授权
                openConfirm(){
                    uni.showModal({
                        title: '请求授权当前位置',
                        content: '需要获取您的地理位置,请确认授权',
                        success: (res)=> {
                            if (res.confirm) {
                                uni.openSetting();// 打开地图权限设置
                            } else if (res.cancel) {
                                uni.showToast({
                                    title: '你拒绝了授权,无法获得周边信息',
                                    icon: 'none',
                                    duration: 1000
                                })
                            }
                        }
                    });
                },

//首页获取定位
        getLocation() {
            this.loading = true;
            uni.getLocation({
                type: 'gcj02',
                altitude: true,
                success: res => {
                    //获取到当前经纬度,然后使用高德第三方接口 进行地理逆编码
                    this.restLocation(res.latitude, res.longitude);
                }
            });
        },
        //逆地理编码
        restLocation(latitude, longitude) {
            const ajaxUrl = 'https://restapi.amap.com/v3/geocode/regeo?key=f0ed1bf4fea7a5b6cf52780bd5fb846a&location=' + longitude + ',' + latitude + '&extensions=all&batch=false';
            uni.request({
                url: ajaxUrl,
                method: 'GET',
                success: res => {
                    this.nearbyAddress = [];
                    const {
                        data: { regeocode }
                    } = res;
                    this.city = regeocode.addressComponent.district;
                }
            });
        },

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容