求助,急急急,经纬度设置全局变量获取不了!!
发布于 6 年前 作者 alu 10602 次浏览 来自 问答

在App的onLaunch()调用wx.get location获取当前位置经纬度,设置为全局变量,在其他页面获取不了!!!是怎么回事!求解!!!

6 回复

虽然 onLaunch 马上会执行,但是由于获取地理位置的速度不快,可能还是有几率拿不到这个值,您可以做个实验,setTimeout 二十秒再去取这个值,看看是不是就有了。

这样写,没错吧?PS:学习中!

App({

onLaunch: function () {

// 展示本地存储能力

var that=this

// 登录

wx.login({

success: res => {

// 发送 res.code 到后台换取 openId, sessionKey, unionId

}

})

// 获取用户信息

wx.getSetting({

success: res => {

if (res.authSetting[‘scope.userLocation’]) {

wx.getLocation({

success: function (res) {

that.globalData.lat = res.latitude,

that.globalData.long = res.longitude

},

})

}

}

})

},

globalData: {

userInfo: null,

lat:null,

long:null

}

})

//index.js

//获取应用实例

const app = getApp()

Page({

data: {

motto: ‘Hello World’,

userInfo: {},

hasUserInfo: false,

canIUse: wx.canIUse(‘button.open-type.getUserInfo’),

lat: app.globalData.lat,

long: app.globalData.long

}

<view>{{lat}}</view>

<view>{{long}}</view>

getLocation 是异步的函数。请确保在其他界面访问此变量时,此函数已执行并成功赋值。

请不要在同步的代码里,访问这个被某个未知时刻异步设置的值。

在其他页面试过同样获取经纬度,并赋值!能立即获取到!!!不存在延迟问题!!

App的onLaunch不是,打开小程序之后就会执行的吗?之前我以为是没授权的问题,后来把授权成功后,再去获取!!在其他页面访问,这个值还是空的!!!用同样的写法,我去获取手机系统信息,例如把windowsheight 设置全局变量,在其他页面访问,倒是可以取到!!

回到顶部