// 判断设备类型
export function getDeviceType() {
  var userAgent = navigator.userAgent || navigator.vendor || window.opera;
 
  if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {
    return 'iOS'; // iOS device
  } else if (userAgent.match(/Android/i)) {
    return 'Android'; // Android device
  } else {
    return 'unknown'; // 其他设备
  }
}

// 打开指定的地图APP
// mapAppId 1: 高德地图  2:百度地图  3: 腾讯地图
// longitude, latitude  地点经纬度
// name	地点名称
export function openNavigation(mapAppId, longitude, latitude, name) {
	let url = ""; // app url
	let webUrl = ""; // web url 用来为用户未安装导航软件时打开浏览器所使用url
	let referer = "彩图奔跑"; //应用名称
	
	const deviceType = getDeviceType();
	
	switch (mapAppId) {
		//下面是拼接url,不同系统以及不同地图都有不同的拼接字段
		case 1: //打开高德地图
			if (deviceType == "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 (deviceType == "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 (deviceType == "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);
		
		document.addEventListener('visibilitychange', function() {
		    if (document.hidden) { // 当页面被切换至后台时
		        // console.log("页面已经切换到了后台");
				clearTimeout(t);
				appInstalled = true;
				// uni.showToast({
				// 	title: chooseMap + '已安装，正在打开APP...',
				// 	icon: 'none',
				// 	duration: 2000
				// });
		    } else { // 当页面重新显示在前台时
		        // console.log("页面已经切换回前台");
		    }
		});
		
		// window.open(url);
		window.location.href = url;
		
		let chooseMap = ''
		if (mapAppId == 1) {
			chooseMap = "高德地图"
		} else if (mapAppId == 2) {
			chooseMap = "百度地图"
		} else {
			chooseMap = "腾讯地图"
		}
		
		let appInstalled = false;
		let t = setTimeout(() => {
			if (appInstalled) {
				return;
			}
			
			uni.showModal({
				title: '提示',
				content: '您的手机尚未安装' + chooseMap + '，是否要使用浏览器打开？',
				confirmText: '确定', //确定文本的文字
				cancelText: '取消', //确定文本的文字
				showCancel: true, //没有取消按钮的弹框
				success: function(res) {
					if (res.confirm) {
						window.open(webUrl);
						// window.location.href = webUrl;
					} else if (res.cancel) {
					}
				}
			})
		}, 500); // 500毫秒后进行检查
		
	}
}

// [App平台] 打开地图
// 导航 会打开导航菜单供用户选择
export function openNavigation2(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("本机未安装指定的地图应用");
						}
					}
				})
			});
		}
	})
}
