news 2026/6/25 18:49:24

uni-app使用北斗卫星实现离线定位

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
uni-app使用北斗卫星实现离线定位

权限配置

仍然采用 HTML5+ 的定位方法,首先需要打开定位权限:

// manifest.json/* 模块配置 */ "modules" : { "Geolocation" : {}, // 启用定位模块}, /* 应用发布信息 */ "distribute" : { /* android打包配置 */ "android" : { "permissions" : [ "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", ] }, /* SDK配置 */ "sdkConfigs" : { "geolocation" : { "system" : { "__platform__" : [ "android" ] } } } },

这里仅设置了安卓代码,IOS系统需要增加额外的配置。

实现

Trae提醒我这里需要注意,Android 6.0(API 23)及以上版本需要动态申请权限,不能只靠 manifest 声明,否则仍然存在拿不到权限的可能。

// 鉴权 getLocationSafely(onSuccess, onError) { let that = this; // 1. 先检查系统定位是否开启(Android 特有)plus.geolocation.getCurrentPosition(() => { console.log('定位服务已经开启'); uni.showToast({ title: '定位服务已经开启', icon: 'none', duration: 3000 }); }, // 这里只是触发系统检测,不处理成功 (e) => { if (e.code === 4) { // code=4 表示“位置服务未开启” uni.showModal({ title: '定位服务未开启', content: '请前往系统设置开启位置信息,才能获取当前位置', showCancel: true, confirmText: '去设置', success: (res) => { if (res.confirm) { // 跳转到系统定位设置页(仅 Android 有效) plus.runtime.openURL('package:com.android.settings'); } } }); onError?.(new Error('系统定位未开启')); return; } }, { timeout: 3000 } ); }, // 也可以使用 uni-app 的官方API进行鉴权uni.authorize({scope: 'scope.userLocation', success() { // 用户同意,可以调用定位 uni.getLocation({ ... }) }, fail() { // 用户拒绝,提示去设置开启 uni.showModal({ title: '定位权限被禁用', content: '请在设置中开启位置权限', showCancel: false }); } });

除却上面的权限原因导致的定位不到,Trae给出的提示还有需要关注:

  • 定位功能是否已经开启
  • 省电策略是否已经关闭(部分设备省电模式下会限制定位)
  • 一定!一定!一定!要到室外测试

测试的时候可以采用两两对照的方式测试:室外vs室内飞行模式vs有网GPS 开启vs关闭,测试上述九种状态的组合。

// 定位方法 function startBeidouLocation() { // TODO 此处可以先检查定位服务是否开启 plus.geolocation.getCurrentPosition( function(position) { console.log('✅ 定位成功'); console.log('纬度:', position.coords.latitude); console.log('经度:', position.coords.longitude); console.log('来源:', position.coords.source); // 可能显示 gps/beidou/gnss uni.showToast({ title: `定位成功: ${position.coords.latitude.toFixed(5)}, ${position.coords.longitude.toFixed(5)}`, icon: 'none' }); }, function(error) { console.error('❌ 定位失败', error.code, error.message); let msg = ''; switch (error.code) { case 1: msg = '用户拒绝授权'; break; case 2: msg = '位置不可用(可能未搜星)'; break; case 3: msg = '定位超时'; break; default: msg = '未知错误'; } uni.showToast({ title: '定位失败: ' + msg, icon: 'none' }); }, { enableHighAccuracy: true, // 此处必须为 true,才能触发 GNSS(含北斗)timeout: 60000, // 给足 60 秒冷启动时间 maximumAge: 0 // 不使用缓存位置 } ); }

这里的timeout甚至可以给的再大点,使用卫星定位冷启动时间其实非常长,不过你如果不是在人迹罕至的区域,60秒基本上就够用了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 3:24:32

莫凡电视:全国地方台全覆盖!流畅播放技术解析

各位影视与电视技术爱好者&#xff0c;今天分享莫凡电视的核心优势——聚焦全国地方台全量覆盖与播放流畅度&#xff0c;技术点扎实易懂&#xff0c;适配智能电视、机顶盒等终端&#xff0c;完美满足不同地区用户观看本地频道的需求。 地方台接收核心采用多协议解码引擎&#…

作者头像 李华
网站建设 2026/6/15 21:26:00

springboot149基于Javaweb的高校图书馆图书借阅管理系统的设计与实现

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 摘要 高校图书馆作为学术资源的核心载体&#xff0c;其信息化管理水平直接影响师生获取知识的效率。基于SpringBoot 1.4.9框…

作者头像 李华
网站建设 2026/6/16 22:46:20

教育体系的变革:编程作为基础技能

教育体系的变革&#xff1a;编程作为基础技能关键词&#xff1a;教育体系变革、编程基础技能、计算思维、编程教育方法、编程教育应用场景摘要&#xff1a;本文深入探讨了教育体系中编程作为基础技能的变革趋势。首先介绍了编程成为基础技能的背景&#xff0c;包括目的、预期读…

作者头像 李华
网站建设 2026/6/25 14:40:20

2026必备!专科生毕业论文痛点全解TOP9 AI论文网站

2026必备&#xff01;专科生毕业论文痛点全解TOP9 AI论文网站 2026年专科生论文写作工具测评维度解析 随着高校教育的不断深化&#xff0c;专科生在毕业论文撰写过程中面临的问题愈发突出。从选题困难、资料查找繁琐到格式规范不熟悉&#xff0c;每一个环节都可能成为阻碍。为帮…

作者头像 李华
网站建设 2026/6/20 22:48:49

《把脉行业与技术趋势》-75-行业研究的目的不是为了写报告,而是为了发现机会。是为了找到未来爆发性增长的行业赛道与该赛道上有竞争力的公司。

“行业研究的目的是找到未来爆发性增长的行业赛道与该赛道上有竞争力的公司。” 简洁、精准&#xff0c;直击核心&#xff0c;已经具备很强的战略洞察力。下面我将从语义优化、逻辑深化、结构拆解、应用场景四个维度为你全面升级和拓展&#xff0c;帮助你在投资、战略、创业或研…

作者头像 李华