uni-app怎么获取当前经纬度坐标 uni-app持续定位与位置更新【技巧】

落磊吖_6140

落磊吖_6140

2026-05-30

884人浏览

原创

持续定位必须用 uni.startLocationUpdate + uni.onLocationChange,轮询 uni.getLocation 无效;uni.getLocation 不返回地址,需调用逆地理编码;type 必须为 'gcj02';微信小程序需配置 manifest 权限并正确引导授权;App 后台定位需原生插件支持。

uni-app怎么获取当前经纬度坐标 uni-app持续定位与位置更新【技巧】

直接调用 uni.getLocation 只能拿一次坐标,持续定位必须用 uni.startLocationUpdate + uni.onLocationChange,否则 iOS 会限频、Android 会被系统挂起,轮询 uni.getLocation 是无效方案。

uni.getLocation 拿不到地址?别硬拼字符串

调用 uni.getLocation 后,res.address 一定是 undefined——这个字段只在 uni.chooseLocation 或部分 App 端配置三方 SDK(如高德/百度)后才可能返回。不要在 success 回调里写 "北京市朝阳区" + res.latitude 这类硬编码逻辑。

  • type 参数必须设为 'gcj02'(国内地图标准),若传 'wgs84' 再直接喂给高德 API,坐标会偏移几百米
  • 需要真实地址,得自己调高德或腾讯的逆地理编码接口,传入 res.latitude 和 res.longitude
  • H5 平台不支持 geocode: true,App 和小程序平台也需额外配置 SDK 才能启用该参数

微信小程序持续定位必须配 manifest.json 权限

没配 requiredPrivateInfos 和 permission,uni.startLocationUpdate 会静默失败,控制台无报错,但 uni.onLocationChange 根本不触发。

  • 在 manifest.json 的 mp-weixin 节点下补全以下三项:
  • "requiredPrivateInfos": ["getLocation", "onLocationChange", "startLocationUpdateBackground"]
  • "scope.userLocation" 和 "scope.userLocationBackground" 的 desc 字段不能空或模糊,例如「用于实时记录配送员轨迹」比「位置服务」更容易过审
  • 必须先成功调用 uni.startLocationUpdate,再注册 uni.onLocationChange,顺序反了监听器收不到任何数据

用户拒绝授权后,uni.authorize 不会再弹窗

第一次点击“拒绝”,uni.authorize({ scope: 'scope.userLocation' }) 后续调用直接走 fail,且不会再次唤起授权弹窗——这是微信强制机制,不是 bug。

uni-app
uni-app

uni-app 是基于 Vue 的跨端开发框架,适合开发 H5、App、小程序、鸿蒙和多端业务应用。

下载
  • 检测权限要用 uni.getSetting,检查 res.authSetting['scope.userLocation'] 是否为 true
  • 若为 false 或 undefined,应立即 uni.showModal 提示,并在 confirm 后调 uni.openSetting
  • uni.openSetting 的 success 回调里,必须再次调 uni.getSetting 确认状态,因为用户可能点了「取消」而非「允许」

后台定位在息屏/切后台后失效?原生插件是唯一稳定解

微信小程序不支持真正的后台持续定位(startLocationUpdateBackground 仅限 App 端),而 App 端仅靠 JS 定时器轮询 uni.getLocation,在 Android 息屏后大概率被系统终止,在 iOS 上则根本无法通过审核。

  • App 端必须用原生插件,如 Ba-LocationAMap 或 uni-plugin-location,它们封装了 ForegroundService(Android)和 UIBackgroundModes(iOS)底层能力
  • Android 需在 manifest.json 中声明 ACCESS_BACKGROUND_LOCATION 和 WAKE_LOCK 权限
  • iOS 需配置 UIBackgroundModes: ["location"],且描述文案要具体,更新频率建议 ≥5 分钟,否则审核易被拒

真正难的不是写几行代码,而是权限链路上每一步都得对:manifest 配置、用户授权引导、后台保活机制、坐标系转换、逆地理编码调用——漏掉任意一环,定位就会在某个机型、某种场景下彻底失灵。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

uni-app uni-app定位

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2683

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5843

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6830

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6558

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

943

5

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

120

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习