uniapp实现小程序地图导航

效果图:

js 复制代码
	const target = computed(() => ({
		lat: data.value?.latitude || 22.525294,
		lng: data.value?.longitude || 113.94319,
		destination: data.value.address || ''
	}));
	// 点击按钮触发:先授权定位,再唤起地图
	const handleOpenLocation = () => {
		wx.getSetting({
			success(res) {
				const locationAuth = res.authSetting['scope.userLocation']
				if (locationAuth === undefined) {
					wx.authorize({
						scope: 'scope.userLocation',
						success() {
							openLocationFn();
						},
						fail() {
							console.log('授权失败:', err);
							wx.showToast({
								title: '拒绝授权后无法使用导航',
								icon: 'none'
							});
						}
					});
				} else if (locationAuth === false) {
					wx.showModal({
						title: '需要位置权限',
						content: '你已拒绝位置授权,请手动开启:点击右上角「···」→「设置」→「位置信息」→「允许」',
						confirmText: '知道了'
					});
				} else {
					openLocationFn();
				}
			},
			fail() {
				wx.showToast({
					title: '获取权限设置失败',
					icon: 'none'
				});
			}
		});
	};

	// 封装:调用wx.openLocation
	const openLocationFn = () => {
		wx.openLocation({
			latitude: parseFloat(target.value.lat),
			longitude: parseFloat(target.value.lng),
			name: target.value.destination,
			scale: 18,
			success() {
				console.log('唤起微信地图成功,用户可选择Apple/腾讯/高德导航');
			},
			fail(err) {
				wx.showToast({
					title: `唤起失败:${err.errMsg}`,
					icon: 'none'
				});
			}
		});
	};
相关推荐
BigTopOne2 小时前
【WebRtc】DTLS-SRTP 加密完整流程详解
前端
陈随易2 小时前
pm2 替代品,nodejs&bun 线上部署必备工具
前端·后端·程序员
单线程_012 小时前
从案例分析 Vue3 Tokenizer 源码一
前端·javascript·vue.js
BigTopOne2 小时前
【WebRtc】-ICE Candidate 与 STUN/TURN 原理详解
前端
l1258652 小时前
# LangGraph Memory机制深度解析:短期记忆与长期记忆的工程实践
前端·人工智能·python·langchain·bootstrap
码视野3 小时前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
大模型码小白3 小时前
AI 对话流性能调优:万级消息的虚拟滚动落地
java·大数据·前端·javascript·人工智能·算法·机器学习
xm_xm_xm_14 小时前
react17版本以前类组件常用操作
前端·javascript·react.js
ly76894 小时前
Web 性能优化实战:从 Core Web Vitals 到工程化性能治理
前端·性能优化
冬奇Lab5 小时前
一天一个开源项目(第200篇):next-forge - 生产级 Next.js SaaS 启动模板
前端·前端框架·开源