当前位置: 首页 > article >正文

uni.getlocation h5获取定位失败后,阻塞问题

       uni.getlocation 在H5中,如果用户未开gps定位或者gps定位信号较差时,定位会失败。这种情况uni.getlocation也不会出现报错,也不会有后续执行,导致代码阻塞,体验极差。

       解决方案1:拿不到定位或者定位失败这个时候可以尝试与后端配合使用ip定位进行定位,保证后续的执行。

       解决方案2:引导用户开启gps定位(可以直接跳转到手机gps定位界面为最好,目前没有找到合适的方法,如果您知道得话,欢迎留言讨论)。

       解决方案3:前端对uni.getLocation进行处理。因为未开定位时uni.getlocation根本不执行,所以在uni.getlocation中不管是success、fail、compelet都不会执行,这个时候我们可以添加一个宏任务。如果uni.getlocation未执行就可以通过setTimeout的执行进行返回,如果uni.getLocation执行了,就直接通过uni.getlocation进行返回。代码如下:

/**
 * @description 通过uni.getLocation获取相关地理信息
 * @returns 
 */
export function getLatLng() {
  return new Promise((resolve) => {
    uni.getLocation({
      type: 'wgs84',
      timeout: 6,
      fail: () => {
        resolve({...getLocationLatLng(), errMsg: 'getLocation:fail'})
      },
      success: (res) => {
        const params = { ...res, latitude: res.latitude, longitude: res.longitude }
        uni.setStorageSync('LatLng', JSON.stringify(params));
        resolve(params);
      },
    })
    const timer = setTimeout(() => {
      clearTimeout(timer)
      resolve({...getLocationLatLng(), errMsg: 'getLocation:fail'})
    }, 6000)
  })
}


http://www.kler.cn/a/273485.html

相关文章:

  • Chromium Mojo(IPC)进程通信演示 c++(1)
  • Prim算法与Dijstra算法
  • qt QTabWidget详解
  • 2024年9月电子学会青少年软件编程Python等级考试(四级)真题试卷
  • Rust 力扣 - 2461. 长度为 K 子数组中的最大和
  • rnn/lstm 项目实战
  • 解决访问站外图片403(referrer)问题
  • 【物联网应用】基于云计算的智能化温室种植一体化平台
  • 怎样提升小程序日活?签到抽奖可行吗?
  • 深度学习面经-part3(RNN、LSTM)
  • DOcker搭建Rancher
  • 爬虫加密算法
  • 聚类分析 | Matlab实现基于NNMF+DBO+K-Medoids的数据聚类可视化
  • unity 加载BMP格式图片数据流
  • GPT实战系列-LangChain的Prompt提示模版构建
  • 瓷管电阻的工艺结构原理及选型参数总结
  • web渗透测试漏洞复现:Elasticsearch未授权漏洞复现
  • uniapp运行项目到微信小程序报错——未找到[“sitemapLocation“]
  • Chrome历史版本下载地址:Google Chrome Older Versions Download (Windows, Linux Mac)
  • 蓝桥杯物联网竞赛_STM32L071_12_按键中断与串口中断
  • 音视频开发之旅——音频基础概念、交叉编译原理和实践(LAME的交叉编译)(iOS)
  • VTK----VTK的事件机制
  • 信息学奥赛一本通之MAC端VSCode C++环境配置
  • 常见视频名词及视频格式
  • webpack5零基础入门-11处理html资源
  • uniapp微信小程序随机生成canvas-id报错?