uni-app harmony os next真机上使用uni.chooseLocation调用腾讯地图sdk定位 有概率性出现加载不出的情况

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

uni-app harmony os next真机上使用uni.chooseLocation调用腾讯地图sdk定位 有概率性出现加载不出的情况

开发环境 版本号 项目创建方式
Windows Windows 10 专业版;21H2 CLI
操作系统内部版本号:19044.3086
HarmonyOS NEXT HarmonyOS NEXT Developer Beta2
手机厂商 华为
手机机型 HUAWEI Mate 60(软件版本:5.0.0.102)
页面类型 vue
vue版本 vue3
打包方式 云端
CLI版本号 4.29

操作步骤:

harmony os next真机上使用腾讯地图sdk定位功能,通过uni.chooseLocation选择地理位置,在已授权用户地理位置权限后,有大概率可能出现地图加载不来的问题,最槽糕的情况下需要多次手动点击右下角定位按钮,而且要间隔很久才能加载出来

预期结果:

期望腾讯地图sdk定位可以正常加载出来

实际结果:

有概率会加载不出来,需手动多次点击定位到当前位置才有可能加载得出来

bug描述:

harmony os next真机上使用腾讯地图sdk定位功能,通过uni.chooseLocation选择地理位置,在已授权用户地理位置权限后,有大概率可能出现地图加载不来的问题,最槽糕的情况下需要多次手动点击右下角定位按钮,而且要间隔很久才能加载出来


4 回复

跟网络稳定性是否有关?


跟网络没关系,后面单独私信@DCloud_UNI_yuhe了,“这个 chooseLocation,好像是还需要调整,等我们调整之后会通知你。”,这是他的回复,而且现在uniapp 涉及到鸿蒙next端很多处文档好像也没有及时更新,这可能会导致开发者遇到文档没法及时排除到底是什么原因

回复 海贼王路飞: 他回你的调整就是4.31发布的内容,这条release应该是漏写了

针对您提到的在uni-app harmony os next真机上使用uni.chooseLocation调用腾讯地图SDK定位时出现的概率性加载不出问题,这通常可能与多种因素有关,包括网络状态、地图SDK的初始化状态、系统资源限制等。以下是一个简化的代码示例,展示了如何在uni-app中集成并使用腾讯地图SDK进行定位,同时包含了一些基本的错误处理和重试机制,以帮助减少加载失败的概率。

首先,确保您已经在项目中正确集成了腾讯地图SDK,并在manifest.json中配置了必要的权限和依赖。

// manifest.json 示例配置
{
  "mp-harmonyos": {
    "app-plus": {
      "distribute": {
        "sdkConfigs": {
          "tencentmap": {
            "version": "latest", // 使用最新版本
            "appid": "YOUR_TENCENT_MAP_APPID" // 替换为您的腾讯地图APPID
          }
        }
      }
    }
  }
}

接下来,在您的页面或组件中调用uni.chooseLocation,并增加错误处理和重试逻辑:

export default {
  data() {
    return {
      retryCount: 0,
      maxRetries: 3
    };
  },
  methods: {
    getLocation() {
      const self = this;
      uni.chooseLocation({
        type: 'gcj02', // 坐标系
        success: (res) => {
          console.log('定位成功', res);
        },
        fail: (err) => {
          console.error('定位失败', err);
          if (self.retryCount < self.maxRetries) {
            self.retryCount++;
            setTimeout(() => {
              self.getLocation(); // 重试
            }, 2000); // 等待2秒后重试
          } else {
            uni.showToast({
              title: '定位服务异常,请稍后重试',
              icon: 'none'
            });
          }
        }
      });
    }
  },
  onLoad() {
    this.getLocation(); // 页面加载时调用定位
  }
};

在上述代码中,我们定义了一个重试机制,当定位失败时,会等待2秒后尝试重新调用uni.chooseLocation,最多重试3次。这种方式可以在一定程度上减少因网络波动或地图SDK初始化未完成导致的加载失败问题。

请注意,实际项目中可能需要更复杂的错误处理和用户反馈机制,以及根据具体业务逻辑调整重试策略和间隔时间。此外,确保您的腾讯地图SDK版本与uni-app及HarmonyOS系统兼容,也是减少问题出现的重要一环。如果问题依旧存在,建议检查网络日志、系统日志或联系腾讯地图SDK的技术支持获取更专业的帮助。

回到顶部