收藏
回答

求助,急急急,经纬度设置全局变量获取不了!!

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

回答关注问题邀请回答
收藏

6 个回答

  • HS
    HS
    2017-10-24

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

    2017-10-24
    有用
    回复
  • 马仔
    马仔
    2017-10-23

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

    2017-10-23
    有用
    回复
  • 马仔
    马仔
    2017-10-23

    这样写,没错吧?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>






    2017-10-23
    有用
    回复
  • HS
    HS
    2017-10-23

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

    2017-10-23
    有用
    回复
  • 马仔
    马仔
    2017-10-23

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

    2017-10-23
    有用
    回复
  • HS
    HS
    2017-10-23

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

    2017-10-23
    有用
    回复
登录 后发表内容