收藏
回答

监听实时地理位置变化事件多久触发一次,能不能设置触发时间?

wx.onLocationChange(function listener)

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

1 个回答

  • 微盟
    微盟
    2023-09-01

      微信小程序中使用wx.startLocationUpdateBackground这个定位方式时,肯定要使用 wx.onLocationChange不间断的获取位置信息,但这个有两个问题:

      1、位置不变化时也上报,亮屏状态每隔两秒触发onLocationChange

      2、api没有提供参数控制onLocationChange的上报间隔

      以下的代码可能解决以上两个问题

      wx.startLocationUpdate({
            success: (res) => {
              wx.onLocationChange((data) => {
                //获取当前时间
                var currentTime =  new Date().getTime();
                //获取上次保存的位置信息
                var oldLocation = wx.getStorageSync('oldLocation');
                //获取上次执行的时间
                var oldTime = wx.getStorageSync('oldTime');
                //将经纬度拼接
                var newLocation = data.latitude+""+data.longitude;
                //判断当前的位置是否和上次位置不一致,并且间隔时间超过5s
                if(oldLocation!=newLocation && currentTime-oldTime>5000){
                  //缓存当前最新位置
                  wx.setStorageSync('oldLocation',newLocation);
                  //缓存当前执行的时间
                  wx.setStorageSync('oldTime',currentTime);
                  //将位置信息上传后台的自己的代码
                  uploadLocation(data);
                }
              });
            },
            fail: (err) => {
    			consoler.log(err);
            }
          })
    
    
    
    2023-09-01
    有用
    回复
登录 后发表内容