uniapp实现地图导航功能

123 阅读1分钟

增加点击事件,调用下面方法

openMap(){
        console.log("导航");
        const StationName=this.data.StationInfo[0].StationName;
        const LocationX_Gaode=this.data.StationInfo[0].LocationX_Gaode;
        const LocationY_Gaode=this.data.StationInfo[0].LocationY_Gaode;
        var url = "";
        if (plus.os.name=="Android") {
                var hasBaiduMap = plus.runtime.isApplicationExist({pname:'com.baidu.BaiduMap',action:'baidumap://'});
                var hasAmap = plus.runtime.isApplicationExist({pname:'com.autonavi.minimap',action:'androidamap://'});
                //var urlBaiduMap = "baidumap://map/marker?location=39.968789,116.347247&title=DCloud&src=Hello%20uni-app";
                //var urlAmap = "androidamap://viewMap?sourceApplication=Hello%20uni-app&poiname=DCloud&lat=39.9631018208&lon=116.3406135236&dev=0"
                var urlBaiduMap = `baidumap://map/marker?location=${LocationY_Gaode},${LocationX_Gaode}&title=${encodeURIComponent(StationName)}&src=Hello%20uni-app`;
                var urlAmap = `androidamap://viewMap?sourceApplication=Hello%20uni-app&poiname=${encodeURIComponent(StationName)}&lat=${LocationY_Gaode}&lon=${LocationX_Gaode}&dev=0`
                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{
                        //url = "geo:39.96310,116.340698?q=%e6%95%b0%e5%ad%97%e5%a4%a9%e5%a0%82";
                        url = `geo:${LocationY_Gaode},${LocationX_Gaode}?q=${encodeURIComponent(StationName)}`;
                        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){
                        console.log("e.index: " + e.index);
                        switch (e.index){
                                case 1:
                                        //url = "http://maps.apple.com/?q=%e6%95%b0%e5%ad%97%e5%a4%a9%e5%a0%82&ll=39.96310,116.340698&spn=0.008766,0.019441";
                                        url = `http://maps.apple.com/?q=${encodeURIComponent(StationName)}&ll=${LocationY_Gaode},${LocationX_Gaode}&spn=0.008766,0.019441`;
                                        break;
                                case 2:
                                        //url = "baidumap://map/marker?location=39.968789,116.347247&title=DCloud&src=Hello%20uni-app";
                                        url = `baidumap://map/marker?location=${LocationY_Gaode},${LocationX_Gaode}&title=${encodeURIComponent(StationName)}&src=Hello%20uni-app`;
                                        break;
                                case 3:
                                        //url = "iosamap://viewMap?sourceApplication=Hello%20uni-app&poiname=DCloud&lat=39.9631018208&lon=116.3406135236&dev=0";
                                        url = `iosamap://viewMap?sourceApplication=Hello%20uni-app&poiname=${encodeURIComponent(StationName)}&lat=${LocationY_Gaode},${LocationX_Gaode}&dev=0`;
                                        break;
                                default:
                                        break;
                        }
                        if (url!="") {
                                plus.runtime.openURL( url, function( e ) {
                                        plus.nativeUI.alert("本机未安装指定的地图应用");
                                });
                        }
                })
        }
},