h5 或者 uniapp打开 高德 百度 腾讯 apple 地图

h5 或者 uniapp打开 高德 百度 腾讯 apple 地图
app端不包含 腾讯地图 H5端不包含 apple

在白名单里加一下 amap自动就行了

export default{
	// 地图
	//#ifdef H5
	openMap(latitude,longitude,name,type){
		// 高德
		if(type == "amap"){
			window.location.href = "http://uri.amap.com/marker?position="+ longitude +","+latitude +"&name="+ name +"&coordinate=gaode&callnative=1";
		}
		// 百度
		if(type == "baidumap"){
			window.location.href = "http://api.map.baidu.com/marker?location="+ latitude +","+ longitude +"&title="+ name +"&content=&output=html"
		}
		// 腾讯
		if(type == "tencentmap"){
			window.location.href = " http://apis.map.qq.com/uri/v1/marker?marker=coord:" + latitude +"," + longitude +";addr:"+ name +""
		}
	},
	//#endif
	//#ifdef APP-PLUS
	openMap(latitude,longitude,name){
	    let url = "";
	    if (plus.os.name == "Android") {
	        let hasBaiduMap = plus.runtime.isApplicationExist({
	            pname: 'com.baidu.BaiduMap',
	            action: 'baidumap://'
	        });
	        let hasAmap = plus.runtime.isApplicationExist({
	            pname: 'com.autonavi.minimap',
	            action: 'androidamap://'
	        });
	        let urlBaiduMap = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&coord_type=gcj02&src=andr.baidu.openAPIdemo`
	        urlBaiduMap = encodeURI(urlBaiduMap)
	        let urlAmap = `androidamap://viewMap?sourceApplication=appname&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`
			// urlAmap = encodeURI(urlBaiduMap)
	        if (hasAmap && hasBaiduMap) {
	            plus.nativeUI.actionSheet({
	                title: "选择地图应用",
	                cancel: "取消",
	                buttons: [{
	                    title: "百度地图"
	                }, {
	                    title: "高德地图"
	                }]
	            }, function(e) {
	                switch (e.index) {
	                    case 1:
	                        plus.runtime.openURL(urlBaiduMap);
	                        break;
	                    case 2:
	                        plus.runtime.openURL(urlAmap);
	                        break;
	                }
	            })
	        } else if (hasAmap) {
	            plus.runtime.openURL(urlAmap);
	        } else if (hasBaiduMap) {
	            plus.runtime.openURL(urlBaiduMap);
	        } else {
	            plus.nativeUI.alert("本机未安装指定的地图应用");
	            // url = "geo:"+latitude+","+longitude+"?q=%e6%95%b0%e5%ad%97%e5%a4%a9%e5%a0%82";
	            // plus.runtime.openURL(url); //如果是国外应用,应该优先使用这个,会启动google地图。这个接口不能统一坐标系,进入百度地图时会有偏差  
	        }
	    } else {
	        // iOS上获取本机是否安装了百度高德地图,需要在manifest里配置,在manifest.json文件app-plus->distribute->apple->urlschemewhitelist节点下添加(如urlschemewhitelist:["iosamap","baidumap"])  
	        plus.nativeUI.actionSheet({
	            title: "选择地图应用",
	            cancel: "取消",
	            buttons: [{
	                title: "Apple地图"
	            }, {
	                title: "百度地图"
	            }, {
	                title: "高德地图"
	            }]
	        }, function(e) {
	            switch (e.index) {
	                case 1:
	                    url = `http://maps.apple.com/?q=%e6%95%b0%e5%ad%97%e5%a4%a9%e5%a0%82&ll=${latitude},${longitude}&spn=0.008766,0.019441`;
	                    break;
	                case 2:
	                    url = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&content=${name}&src=ios.baidu.openAPIdemo&coord_type=gcj02`;
	                    break;
	                case 3:
	                    url = `iosamap://viewMap?sourceApplication=applicationName&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`
	                    break;
	                default:
	                    break;
	            }
	            if (url != "") {
	                url = encodeURI(url)
	                plus.runtime.openURL(url, function(e) {
	                    plus.nativeUI.alert("本机未安装指定的地图应用");
	                });
	            }
	        })
	    }
	},
	// #endif
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值