uniapp-打開(kāi)第三方地圖

前言:最近做一款外賣(mài)配送的應(yīng)用,需要直接打開(kāi)第三方地圖,簡(jiǎn)單記錄下

  • 需要條件編譯哦,只有app端可以呀,小程序不支持哦
  • 小程序的打開(kāi)第三方地圖需要依托于uni.openLocation,不過(guò)這樣會(huì)先打開(kāi)地圖頁(yè),然后右下角會(huì)有選擇打開(kāi)第三方圖片的按鈕
//打開(kāi)第三方地圖
export function 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(urlAmap)
        if (hasAmap && hasBaiduMap) {
            plus.nativeUI.actionSheet({
                title: "選擇地圖應(yīng)用",
                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("本機(jī)未安裝指定的地圖應(yīng)用");
            // url = "geo:"+latitude+","+longitude+"?q=%e6%95%b0%e5%ad%97%e5%a4%a9%e5%a0%82";
            // plus.runtime.openURL(url); //如果是國(guó)外應(yīng)用,應(yīng)該優(yōu)先使用這個(gè),會(huì)啟動(dòng)google地圖。這個(gè)接口不能統(tǒng)一坐標(biāo)系,進(jìn)入百度地圖時(shí)會(huì)有偏差  
        }
    } else {
        // iOS上獲取本機(jī)是否安裝了百度高德地圖,需要在manifest里配置,在manifest.json文件app-plus->distribute->apple->urlschemewhitelist節(jié)點(diǎn)下添加(如urlschemewhitelist:["iosamap","baidumap"])  
        plus.nativeUI.actionSheet({
            title: "選擇地圖應(yīng)用",
            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=${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("本機(jī)未安裝指定的地圖應(yīng)用");
                });
            }
        })
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容