《uniapp 获取定位地址名称与经纬度》

《uniapp 获取定位地址名称与经纬度》
一清三白🚀 UniApp 实战 | 获取用户定位地址名称与经纬度 + 嵌入地图展示
在移动端开发中,获取用户当前位置是许多场景的核心需求,例如地图展示、附近服务、订单地址等。在 UniApp 中,我们可以使用 uni.chooseLocation
快速调起系统地图选择位置,并获取详细地址、经度和纬度。
本文将通过 Vue3 的形式,分享如何封装一个定位地址的功能模块,并在页面中嵌入地图实时展示选中地址。
✨ 效果演示图
📷 *
📌 实现目标
- ✅ 使用系统地图选点,获取地址名称、经纬度
- ✅ 页面展示已选地址信息
- ✅ 页面嵌入地图组件打点展示
- ✅ 选择成功/失败时给予用户反馈
- ✅ 防止重复点击,增强用户体验
🧠 实现思路
我们主要调用 uni.chooseLocation()
,其成功回调中会返回如下字段:
res.address
: 详细地址字符串res.name
: 地址名称(可能是 POI 名)res.latitude
: 纬度res.longitude
: 经度
然后我们用 <map>
组件将地址在页面中可视化呈现,并打上 Marker。
🧩 Vue3 + <script setup>
风格完整代码
1 | <script setup lang="ts"> |
🔐 权限提醒(App 平台)
如你打包 App 使用地图组件,需在 manifest.json
中配置地图 SDK 的 Key。例如使用高德地图:
1 | "app-plus": { |
📦 微信小程序地图注意
- 微信小程序默认使用腾讯地图,需要在腾讯位置服务申请小程序专用 key;
- 确保小程序后台已添加 key;
- 可选:在真机调试时更可靠,模拟器有时地图无法正常显示。
✅ 小结
本文完整讲解了如何使用 UniApp 实现:
- 🌍 地址名称、经纬度获取;
- 🧭 系统地图选点;
- 🗺 地图组件打点展示;
- ⛑ 用户体验优化:防抖、toast 提示;
- 📦 权限配置与平台适配。
你可以在项目中直接使用这套组合,构建出稳定好用的地址定位模块。
🔄 后续推荐阅读
- 使用高德 SDK 进行自动定位与逆地址解析
- 把地址信息同步保存到云数据库
- 封装成 composable:
useLocationPicker()
📚 参考文档
以下是本文涉及的官方文档或开发平台链接,建议收藏以便随时查阅:
- UniApp 官方文档 - uni.chooseLocation
- UniApp 官方组件 - map 地图组件
- 高德开放平台(获取 App Key)
- 腾讯位置服务(微信小程序地图 Key 申请)
- 微信小程序地图组件文档
❓ 常见问题解答(FAQ)
Q1: Map key not configured
是什么原因?
A: 这是地图 SDK 提示未配置 Key。请根据使用平台(App/小程序):
- App 端需在
manifest.json
中配置高德或腾讯地图的appkey
; - 微信小程序需在腾讯位置服务申请 Key,并在后台绑定小程序
AppID
; - 若使用
uni.chooseLocation
,也可能是调用的是地图服务未授权。
Q2: 地图组件中不显示标记点怎么办?
A:
- 确保
latitude
、longitude
都已经赋值; markers
数组格式正确,并包含有效坐标;iconPath
图标路径必须为static
文件夹下资源;- 微信小程序需要真机调试才能显示地图标记。
Q3: 是否可以自定义地图图标?
A: 可以,在 markers
中的 iconPath
指向你自定义的图标路径(建议 30x30 px)。例如:
1 | iconPath: '/static/marker.png' |
Q4: 如何默认打开地图时就展示当前位置?
A: 可以使用 uni.getLocation()
在页面 onLoad
时获取当前 GPS 坐标,然后传入给 map
组件作为默认坐标。
Q5: chooseLocation
失败怎么处理?
A:
- 用户取消了选择;
- 地图权限未授权(需引导用户授权);
- 小程序未绑定腾讯地图 key 或未开通服务;
- 使用了 H5 端测试,不支持该 API(需使用 App 或小程序真机)。
Q6: 如何支持多个标记点展示?
A: 在 markers
中添加多个对象即可,例如:
1 | markers: [ |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果