uni-app 微信小程序使用uni.chooseLocation打开地图选点 随机出现用户点击无反应 清空小程序缓存后恢复正常

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 微信小程序使用uni.chooseLocation打开地图选点 随机出现用户点击无反应 清空小程序缓存后恢复正常

开发环境 版本号 项目创建方式
Windows wins HBuilderX

示例代码:

// #ifdef MP-WEIXIN || H5  

uni.chooseLocation({  
  latitude: lat,  
  longitude: lng,  
  success: (data) => {  

    console.log(data)  
    const name = data.name  
    const address = data.address  
    const latitude = data.latitude  
    const longitude = data.longitude  

    uni.navigateTo({  
      url: '/pagesA/add_line/add_line?type=add&data=' + encodeURIComponent(JSON  
          .stringify({  
            name: name,  
            address: address,  
            lat: latitude,  
            lng: longitude  
          })) + '&line_id=' + this.line_id  
    });  

    // this.$refs.popup.close()  

  },  
  fail: (err) => {  
    // uni.showToast({  
    //    icon: 'error',  
    //    title: err  

    // })  
    this.is_show_op = true  
    setTimeout(() => {  
      document.body.style.overflow = 'auto'  
    }, 200)  

  }  
})

操作步骤:

无法复现,出现非常随机

预期结果:

1

实际结果:

1

bug描述:

在微信小程序使用uni.chooseLocation打开地图选点,会随机出现一些用户点击没反应,清空小程序缓存后就正常了, 非常邪门,以至于我都无法复现这个问题,按钮卓和苹果用户都有发生


2 回复

用户是开这gps的


针对你提到的 uni-app 在微信小程序中使用 uni.chooseLocation 打开地图选点时,随机出现用户点击无反应的问题,并在清空小程序缓存后恢复正常的情况,这通常可能是由于缓存中的数据异常或某些状态未正确重置导致的。下面提供一个简化的代码示例,以及如何在用户点击无反应时尝试重置状态或重新触发选择位置的逻辑。

代码示例

首先,确保你正确使用了 uni.chooseLocation API。以下是一个基本的调用示例:

export default {
  data() {
    return {
      location: null,
    };
  },
  methods: {
    chooseLocation() {
      uni.chooseLocation({
        success: (res) => {
          this.location = res;
          console.log('Selected location:', this.location);
        },
        fail: (err) => {
          console.error('Failed to choose location:', err);
          // 尝试处理失败情况,比如重置状态或提示用户
          this.resetLocationState();
        },
      });
    },
    resetLocationState() {
      // 重置location状态,可能还需要其他逻辑处理,比如清理定时器、取消请求等
      this.location = null;
      uni.showToast({
        title: '选择位置失败,请重试',
        icon: 'none',
      });
    },
  },
};

处理思路

  1. 错误处理:在 fail 回调中,除了记录错误日志,可以增加一些用户友好的处理,比如显示一个提示信息,并尝试重置相关状态。

  2. 状态管理:确保在组件或页面中管理状态时,对于可能影响 uni.chooseLocation 调用的状态,要有明确的重置逻辑。

  3. 缓存处理:虽然清空缓存可以临时解决问题,但这不是一个长期的解决方案。考虑在代码中添加逻辑来检测和处理可能的缓存问题,比如使用版本号控制缓存,或者在用户遇到问题时提供手动清理缓存的入口。

  4. 调试与日志:增加更详细的日志记录,帮助定位问题发生的具体环节。特别是在 fail 回调中记录更多上下文信息,有助于后续的问题分析和修复。

  5. 版本更新:如果问题出现在特定的小程序版本或微信客户端版本中,考虑引导用户升级到最新版本,或者在小程序后台提交问题反馈。

通过上述方法,你可以更有效地管理和解决 uni.chooseLocation 在微信小程序中可能出现的问题。

回到顶部