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

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.lryc.cn/news/320747.html

相关文章:

  • Flutter 运行 flutter doctor 命令长时间未响应
  • 【数据挖掘】练习2:数据管理2
  • 【iOS】——Blocks
  • 体验OceanBase OBD V2.5.0 组件内扩容和组件变更
  • 关于前端的学习
  • DataX脚本告别手动编写,用大模型或Java代码自动生成
  • ASP.NET通过Appliaction和Session统计在人数和历史访问量
  • 在基于全志V851se的TinyVision上手动构建 Linux 6.1 + Debian 12 镜像
  • 使用jenkins-pipeline进行利用项目文件自动化部署到k8s上
  • unity发布安卓获取读取权限
  • VSCode下使用github初步
  • 华为设备配置命令大全
  • 详解基于快速排序算法的qsort的模拟实现
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Polyline)
  • 项目风险管理
  • glib交叉编译
  • Android11实现能同时开多个录屏应用(或者共享屏幕或投屏时录屏)
  • 音视频实战---音频重采样
  • 主存中存储单元地址的分配
  • Python和R的区别是什么,Python与R的应用场景是什么?
  • azure databricks 常用的JDBC连接
  • 功能齐全的免费 IDE Visual Studio 2022 社区版
  • FreeRTOS入门基础
  • 蓝桥杯-24点-搜索
  • 【附下载】3Ds Max从安装、配置到入门提高和高级用法
  • 开源堡垒机Jumpserver
  • PyTorch学习笔记之基础函数篇(十五)
  • Latex插入pdf图片,去除空白部分
  • 微服务:高并发带来的问题的容错方案
  • sqllab第35-45关通关笔记