uniapp中打开地图软件

toOpenMap(){
				//点击打开第三方地图APP
				// #ifdef APP
				this.openNavigation(this.longitude, this.latitude, this.addr)
				//高德地图
				// #endif
			},
			//打开地图
			// 导航 会打开导航菜单供用户选择
			openNavigation(longitude, latitude, name) {
				let url = ""; // app url
				let webUrl = ""; // web url 用来为用户未安装导航软件时打开浏览器所使用url
				let referer = "SKK";//应用名称
				plus.nativeUI.actionSheet({ //选择菜单
					title: "选择地图应用",
					cancel: "取消",
					buttons: [{
						title: "高德地图"
					}, {
						title: "百度地图"
					}, {
						title: "腾讯地图"
					}] // 可选的地图类型
				}, (e) => {
					// 判断用户选择的地图
					switch (e.index) {
						//下面是拼接url,不同系统以及不同地图都有不同的拼接字段
						case 1: //打开高德地图
							if (plus.os.name == "Android") { // 安卓
								url =
									`androidamap://viewMap?sourceApplication=appname&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`;
							} else { //苹果
								url =
									`iosamap://viewMap?sourceApplication=applicationName&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`;
							}
							webUrl =
								`https://uri.amap.com/marker?position=${longitude},${latitude}&name=${name}&src=mypage&coordinate=gaode`
							break;
						case 2: //打开百度地图
							if (plus.os.name == "Android") { // 安卓
								url =
									`baidumap://map/marker?location=${latitude},${longitude}&title=${name}&content=${name}&src=andr.baidu.openAPIdemo&coord_type=gcj02`;
							} else { //苹果
								url =
									`iosamap://map/marker?location=${latitude},${longitude}&title=${name}&content=${name}&src=ios.baidu.openAPIdemo&coord_type=gcj02`;
							}
							webUrl =
								`http://api.map.baidu.com/marker?location=${latitude},${longitude}&title=${name}&content=${name}&output=html&src=webapp.baidu.openAPIdemo`
							break;
						case 3: //打开腾讯地图
							if (plus.os.name == "Android") { // 安卓
								url =
									`qqmap://map/geocoder?coord=${latitude},${longitude}&title${name}&addr=${name}=&referer=${referer}`
							} else { //苹果
								url =
									`qqmap://map/geocoder?coord=${latitude},${longitude}&title${name}&addr=${name}=&referer=${referer}`;
							}
							webUrl =
								`https://apis.map.qq.com/uri/v1/marker?marker=coord:${latitude},${longitude}&title=${name}&addr=${name}&referer=${referer}`
							break;
					}
					// 如果选中
					if (url != "") {
						url = encodeURI(url);
						// console.log(url, '地址')
						// 打开 app 导航 
						plus.runtime.openURL(url, (err) => { // 失败回到
							// 毕竟用户可能没有安装app但一定安装的有浏览器						
							// 如果失败则说明未安装 直接 打开网页版进行导航
							let chooseMap = ''
							if (e.index == 1) {
								chooseMap = "高德地图"
							} else if (e.index == 2) {
								chooseMap = "百度地图"
							} else {
								chooseMap = "腾讯地图"
							}
							uni.showModal({
								title: '提示',
								content: '检测到您本机暂未安装' + chooseMap + '应用,是否要选择使用浏览器打开?',
								confirmText: '确定', //确定文本的文字
								cancelText: '取消', //确定文本的文字
								showCancel: true, //没有取消按钮的弹框
								success: function(res) {
									if (res.confirm) {
										plus.runtime.openURL(webUrl)
										console.log('用户点击了确定')
									} else if (res.cancel) {
										console.log('用户点击了取消')
										// plus.nativeUI.alert("本机未安装指定的地图应用");
									}
								}
							})
						});
					}
				})
			}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阁下大名

您的鼓励就是我前进的动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值