三大地图 APP 判断
"com.baidu.BaiduMap
"com.autonavi.minimap
"com.tencent.map
let flatitude=e.latitude;
let flongitude=e.longitude;
let tlatitude='39.909187';
let tlongitude='116.397451';
let name='天安门';
let url = "";
let button=[{title: "腾讯地图"},{title: "百度地图"}, {title: "高德地图"}];
------------------------------------------------------------------------------------------------------------------安卓 这个亲测有用------------------------------------------------------------------------------------------------------------------------------------------
API地址: "https://lbs.qq.com/webApi/uriV1/uriGuide/uriMobileRoute"
显示点: `qqmap://map/geocoder?coord=${latitude},${longitude}&referer=XXXXX`;
显示导航路径: `qqmap://map/routeplan?type=drive&from=当前位置&fromcoord=${flatitude},${flongitude}&to=${name}&tocoord=${tlatitude},${tlongitude}&referer=XXXXX`
API地址 "https://lbs.amap.com/api/amap-mobile/guide/android/route "
(注意:[amapuri://route/plan/ ]才可唤起APP并导航,API地址下的[//uri.amap.com/navigation]没法唤起高德地图APP,只能在h5打开,设置了callnative=1依旧无法打开,甚至使用plus.runtime.openURL(url,()=>{}) 根本识别不了 )
打开点:
"ndroidamap://viewMap?sourceApplication=appname&poiname=${name}&lat=${tlatitude}&lon=${tlongitude}&dev=0"
打开导航路径:
"amapuri://route/plan/?sid=&slat=${flatitude}&slon=${flongitude}&sname=当前位置&did=&dlat=${tlatitude}&dlon=${tlongitude}&dname=${name}&dev=0&t=0"
API地址 "http://lbsyun.baidu.com/index.php?title=uri/api/android"
打开点:
" baidumap://map/marker?location=${latitude},${longitude}&title=${name}&coord_type=gcj02&src=andr.baidu.openAPIdemo"
打开导航路径:
" baidumap://map/direction?origin=name:当前位置|latlng:${flatitude},${flongitude}&&destination=name:${name}|latlng:${tlatitude},${tlongitude}&coord_type=gcj02&mode=driving&src=${appid}"
------------------------------IOS-----没时间真机调试, 只是从开放平台弄来的-------------------------2020年11月30日(IOS的试过了也可以打开)
腾讯地图
不变
高德地图
点
url = `iosamap://viewMap?sourceApplication=applicationName&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`;
导航:
url=`iosamap://path?sourceApplication=${appid}&sid=&slat=${flatitude}&slon=${flongitude}&sname=当前位置&did=&dlat=${tlatitude}&dlon=${tlongitude}&dname=${name}&dev=0&t=0`;
百度地图
点 :
url = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&content=${name}&src=ios.baidu.openAPIdemo&coord_type=gcj02`;
导航
url = `baidumap://map/direction?origin=name:当前位置|latlng:${flatitude},${flongitude}&&destination=name:${name}|latlng:${tlatitude},${tlongitude}&coord_type=gcj02$mode=driving&src=${appid}`;
苹果地图
url=`http://maps.apple.com/?q=${name}&ll=${latitude},${longitude}&spn=0.008766,0.019441`; (这个之前说不能用,后来有朋友测试说可以用了.大家酌情可试)
===================代码==================================
if (plus.os.name == "Android") {//判断是安卓端
plus.nativeUI.actionSheet({//选择菜单
title: "选择地图应用",
cancel: "取消",
buttons: button,
}, function(e) {
switch (e.index) {
case 1:
url=`qqmap://map/routeplan?type=drive&from=当前位置&fromcoord=${flatitude},${flongitude}&to=${name}&tocoord=${tlatitude},${tlongitude}&referer=XXXXX`;
break;
case 2:
url = `baidumap://map/direction?origin=name:当前位置|latlng:${flatitude},${flongitude}&&destination=name:${name}|latlng:${tlatitude},${tlongitude}&coord_type=gcj02&mode=driving&src=${appid}`;
break;
case 3:
url=`amapuri://route/plan/?sourceApplication=${appid}&sid=&slat=${flatitude}&slon=${flongitude}&sname=当前位置&did=&dlat=${tlatitude}&dlon=${tlongitude}&dname=${name}&dev=0&t=0`;
break;
default:
break;
}
if (url != "") {
url = encodeURI(url);
//plus.runtime.openURL(url,function(e){})调起手机APP应用
plus.runtime.openURL(url, function(e) {
// No Activity found to handle Intent { act=android.intent.action.VIEW dat=${url} flg=0x10000000 }
plus.nativeUI.alert("本机未安装指定的地图应用");
});
}
})
} else {
// iOS上获取本机是否安装了百度高德地图,需要在manifest里配置
// 在manifest.json文件app-plus->distribute->apple->urlschemewhitelist节点下添加
//(如urlschemewhitelist:["iosamap","baidumap"])
let apple={title: "Apple地图"};
button.push(apple)
plus.nativeUI.actionSheet({
title: "选择地图应用",
cancel: "取消",
buttons: button,
}, function(e) {
switch (e.index) {
case 1:
url=`qqmap://map/routeplan?type=drive&from=当前位置&fromcoord=${flatitude},${flongitude}&to=${name}&tocoord=${tlatitude},${tlongitude}&referer=XXXXXX`;
break;
case 2:
url = `baidumap://map/direction?origin=name:当前位置|latlng:${flatitude},${flongitude}&&destination=name:${name}|latlng:${tlatitude},${tlongitude}&coord_type=gcj02&mode=driving&src=${appid}`;
break;
case 3:
url=`iosamap://path?sourceApplication=${appid}&sid=&slat=${flatitude}&slon=${flongitude}&sname=当前位置&did=&dlat=${tlatitude}&dlon=${tlongitude}&dname=${name}&dev=0&t=0`;
break;
case 4:// 这个苹果地图的打不开, 大家不要用了, 而且我也没找到任何文档,找到的麻烦跟我说一下啊
url=`http://maps.apple.com/?q=${name}&ll=${latitude},${longitude}&spn=0.008766,0.019441`;
break;
default:
break;
}
if (url != "") {
url = encodeURI(url);
plus.runtime.openURL(url, function(e) {
plus.nativeUI.alert("本机未安装指定的地图应用");
});
}
})
}