uniapp 小程序获取当前经纬度,传递给后端

发布时间 2023-11-16 10:28:11作者: 遇你温柔如初
// #ifdef MP-WEIXIN
            //定位方法
            getUserLocation: function() {
                var _this = this;
                wx.getSetting({
                    success: (res) => {
                        // res.authSetting['scope.userLocation'] == undefined    表示 初始化进入该页面
                        // res.authSetting['scope.userLocation'] == false    表示 非初始化进入该页面,且未授权
                        // res.authSetting['scope.userLocation'] == true    表示 地理位置授权
                        if (res.authSetting['scope.userLocation'] != undefined && res.authSetting[
                                'scope.userLocation'] != true) {
                            //未授权
                            wx.showModal({
                                title: '请求授权当前位置',
                                content: '需要获取您的地理位置,请确认授权',
                                success: function(res) {
                                    if (res.cancel) {
                                        //取消授权
                                        wx.showToast({
                                            title: '拒绝授权',
                                            icon: 'none',
                                            duration: 1000
                                        })
                                        _this.locationRole = false;
                                    } else if (res.confirm) {
                                        //确定授权,通过wx.openSetting发起授权请求
                                        wx.openSetting({
                                            success: function(res) {
                                                if (res.authSetting[
                                                        "scope.userLocation"] ==
                                                    true) {
                                                    wx.showToast({
                                                        title: '授权成功',
                                                        icon: 'success',
                                                        duration: 1000
                                                    })
                                                    _this.locationRole = true;
                                                    //再次授权,调用wx.getLocation的API
                                                    _this.geo();
                                                } else {
                                                    wx.showToast({
                                                        title: '授权失败',
                                                        icon: 'none',
                                                        duration: 1000
                                                    })
                                                    _this.locationRole = false;
                                                }
                                            }
                                        })
                                    }
                                }
                            })
                        } else if (res.authSetting['scope.userLocation'] == undefined) {
                            //用户首次进入页面,调用wx.getLocation的API
                            _this.geo();
                        } else {
                            console.log('授权成功')
                            _this.locationRole = true;
                            //调用wx.getLocation的API
                            _this.geo();
                        }
                    }
                })
            },
            // 获取定位城市
            geo: function() {
                // var _this = this;
                // wx.getLocation({
                //     type: 'wgs84',
                //     success: function(res) {
                //         _this.latitude = res.latitude
                //         _this.longitude = res.longitude
                //         _this.stationDetails()
                //     }
            
                // })
                var _this = this;
                // wx.showLoading({
                //     title: '定位中...',
                //     mask: true,
                // })
                wx.getLocation({
                    // type: 'wgs84',
                    type: 'gcj02',
                    success: function(res) {
                        console.log('location111', res)
                        _this.latitude = res.latitude
                        _this.longitude = res.longitude
                        wx.hideLoading()
                        // 调用得方法==============
                        // _this.stationDetails()
                    }
                });
                // new Promise((resolve, reject) => {
                //     let _locationChangeFn = (res) => {
                //         console.log('location change', res)
                //         _this.latitude = res.latitude
                //         _this.longitude = res.longitude
                //         _this.stationDetails()
                //         wx.hideLoading()
                //         // wx.offLocationChange(_locationChangeFn)
                //     }
                //     wx.startLocationUpdate({
                //         success: (res) => {
                //             console.log(res, 5656);
                //             wx.onLocationChange(_locationChangeFn)
                //             resolve()
                //         },
                //         fail: (err) => {
                //             console.log('获取当前位置失败', err)
                //             wx.hideLoading()
                //             reject()
                //         }
                //     })
                // })
            },
            // #endif