1. 程式人生 > >web 端 調取導航總結

web 端 調取導航總結

1  跳到百度網頁版

location.href="http://api.map.baidu.com/direction?origin="+latCurrent+","+lngCurrent+"&destination=39.89778,116.709684&mode=driving®ion=北京&output=html";  

2 js 直接調取 手機已經安裝的 app

//獲取瀏覽器資訊

    var browser = {

        ua : function() {

            var u = navigator.userAgent;

            var isChrome = u.match(/Chrome\/([\d.]+)/)

                || u.match(/CriOS\/([\d.]+)/);

            var isAndroid = u.match(/(Android);?[\s\/]+([\d.]+)?/);

            var iosVersion = function() {

                if (/iP(hone|od|ad)/.test(navigator.platform)) {

                    var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);

                    return [ parseInt(v[1], 10), parseInt(v[2], 10),

                        parseInt(v[3] || 0, 10) ];

                }

            }();

            var chromeVersion = function() {

                var chrome = navigator.userAgent.match(/Chrome\/(\d+)\./);

                if (chrome) {

                    return parseInt(chrome[1], 10);

                }

            }();

            var ios9 = iosVersion && iosVersion[0] >= 9;

            var chrome18 = isChrome && isAndroid && chromeVersion

                && chromeVersion > 18;

            return { // 移動終端瀏覽器版本資訊

                trident : u.indexOf('Trident') > -1, // IE核心

                presto : u.indexOf('Presto') > -1, // opera核心

                webKit : u.indexOf('AppleWebKit') > -1, // 蘋果、谷歌核心

                gecko : u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, // 火狐核心

                mobile : !!u.match(/AppleWebKit.*Mobile.*/), // 是否為移動終端

                iOS : !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios終端

                android : u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, // android終端或uc瀏覽器

                iPhone : u.indexOf('iPhone') > -1, // 是否為iPhone或者QQHD瀏覽器

                iPad : u.indexOf('iPad') > -1, // 是否iPad

                webApp : u.indexOf('Safari') == -1, // 是否web應該程式,沒有頭部與底部

                weChat : u.indexOf('MicroMessenger') > -1,

                UC : u.indexOf('UCBrowser') > -1,

                u3 : u.indexOf('U3') > -1,

                chrome : u.indexOf('Chrome') > -1,

                windowsPhone : u.indexOf("Windows Phone") > -1,

                samsung : u.indexOf("Samsung") > -1,

                QQ : (u.match(/\sQQ/i) != null ? u.match(/\sQQ/i).toLowerCase() == " qq"

                    : false),

                isChrome : isChrome,

                isAndroid : isAndroid,

                iosVersion : iosVersion,

                chromeVersion : chromeVersion,

                ios9 : ios9,

                chrome18 : chrome18

            };

        }()

    }

    var ua = browser.ua;

    // 開啟地圖App,開始導航

    function openMapApp(lat, lng, addr) {

            // 地圖uri api陣列

        var uri = new Array();

        if (ua.android) {

            // 百度地圖uri api

            uri[0] = "bdapp://map/navi?location=" + lat + "," + lng + "&query="

                + addr;

            // 高德地圖uri api

            uri[1] = "androidamap://navi?sourceApplication=xlwx&poiname=" + addr

                + "&lat=" + lat + "&lon=" + lng + "&dev=1&style=2";

            // 騰訊地圖uri api

            uri[2] = "qqmap://map/marker?marker=coord:" + lat + "," + lng

                + ";title:" + addr + "&referer=xlwx";

        } else if (ua.iOS) {

            // 百度地圖uri api

            uri[0] = "baidumap://map/navi?location=" + lat + "," + lng + "&query="

                + addr;

// 高德地圖uri api

            uri[1] = "iosamap://navi?sourceApplication=xlwx&poiname=" + addr

                + "&lat=" + lat + "&lon=" + lng + "&dev=1&style=2";

// 騰訊地圖uri api

            uri[2] = "qqmap://map/marker?marker=coord:" + lat + "," + lng

                + ";title:" + addr + "&referer=xlwx";

// 蘋果地圖uri api

            uri[3] = "http://maps.apple.com/?sll=" + lat + "," + lng + "&address="

                + addr;

        }

//呼叫uri

        if(uri.length == 0){

            return;

        }

        window.location.href = uri[0];

//啟動定時器time1

        var time1 = setTimeout(function() {

// 若啟動應用,則js會被中斷較長時間,超出此範圍

            window.location.href = uri[1];

        }, 2000);

//啟動定時器time2

        var time2 = setTimeout(function() {

// 若啟動應用,則js會被中斷較長時間,超出此範圍

            window.location.href = uri[2];

        }, 4000);

//清除定時器

        window.beforeunload = function() {

            if(time1 != null){

                clearTimeout(time1);

            }

            if(time2 != null){

                clearTimeout(time2);

            }

        }

        window.pagehide = function() {

            if(time1 != null){

                clearTimeout(time1);

            }

            if(time2 != null){

                clearTimeout(time2);

            }

        }

        window.onblur = function() {

            if(time1 != null){

                clearTimeout(time1);

            }

            if(time2 != null){

                clearTimeout(time2);

            }

        }

    }