1. 程式人生 > >h5判斷百度、高德、騰訊地圖客戶端是否安裝及調起客戶端導航

h5判斷百度、高德、騰訊地圖客戶端是否安裝及調起客戶端導航

(function($, navigation) {

    navigation.getLocation = function(callback) {
        callback = callback || $.noop;
        plus.geolocation.getCurrentPosition(callback, function(e) {
            mui.toast("異常:" + e.message);
        });
    }

    function translatePoint(position) {
        //currentLon = position.coords.longitude;
        //currentLat = position.coords.latitude;
        //        local = position;
        //        if(showMap) {
        //            openMap(local);
        //        }
        console.log("-----------position" + JSON.stringify(position))
        return {
            currentLon: position.coords.longitude,
            currentLat: position.coords.latitude
        };
    }

   //如果導航只用這個方法久可以了,其它方法是為了備註以後可能用到的需求而保留的 。siteName是終點的文字描述。

    navigation.startNavigation = function(longitude, latitude,siteName) {
        //http://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.CoordinateConvertOptions
        var wt = plus.nativeUI.showWaiting('正在獲取當前位置');
        navigation.getLocation(function(position) {

            var point = new plus.maps.Point(longitude, latitude);
            var options = {
                coordType:"bd09ll"//源資料的座標型別
            };
            plus.maps.Map.convertCoordinates(point, options, function(event) {//mui轉換座標系
                wt.close();
                var dst = event.coord; // 轉換後的座標值
                var src = new plus.maps.Point(position.coords.longitude, position.coords.latitude);
                // 呼叫系統地圖顯示
                plus.maps.openSysMap(dst, siteName, src);

            }, function(e) {
                alert("Failed:" + JSON.stringify(e));
            });

            //navigation.openMap(position, latitude, longitude);
        });
    }

    navigation.openMap = function(position, latitude, longitude) {
        var lat = latitude;
        var lng = longitude;
        //inspInfo.latitude = 30.335682;
        //inspInfo.longitude = 120.224934;
        //百度com.baidu.BaiduMap  高德com.autonavi.minimap 騰訊com.tencent.map
        //        if(navigation.judgeExists('com.baidu.BaiduMap')) {
        //            url = "http://api.map.baidu.com/direction?origin=latlng:" + position.coords.latitude + "," + position.coords.longitude + "|name:當前位置&destination=latlng:" + lat + "," + lng + "|name:終點&mode=driving&region=中國&output=html&src=專案名稱";
        //        } else
        if(navigation.judgeExists('com.autonavi.minimap')) {
            //轉換火星座標系
            var gd = coordinate.bd09togcj02(position.coords.longitude, position.coords.latitude);
            var gd2 = coordinate.bd09togcj02(lng, lat);
            url = "http://uri.amap.com/navigation?from=" + gd[0] + "," + gd[1] + ",當前位置&to=" + gd2[0] + "," + gd2[1] + ",站點&mode=car&src=公司名稱&callnative=1"

        } else if(navigation.judgeExists('com.tencent.map')) {
            //百度轉gps座標系
            var gd = coordinate.bd09towgs84(position.coords.longitude, position.coords.latitude);
            var gd2 = coordinate.bd09towgs84(lng, lat);
            url = "http://apis.map.qq.com/uri/v1/routeplan?type=drive&from=當前位置&fromcoord=" + gd[1] + "," + gd[0] + ",當前位置&to=站點&tocoord=" + gd2[1] + "," + gd2[0] + "&coord_type=1&referer=專案名稱"

        } else {

            mui.toast('沒有找到地圖客戶端');
            return;
        }
        //呼叫地圖url
        var uri = encodeURI(url);
        //        plus.runtime.openURL(uri);
        //        mui.openWindow(uri);
    }

    /**
     * 判斷客戶端是否安裝
     */
    navigation.judgeExists = function(packageName) {
        try {
            var main = plus.android.runtimeMainActivity();
            var packageManager = main.getPackageManager();
            var PackageManager = plus.android.importClass(packageManager);
            var packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
            if(packageInfo) {
                //已安裝
                return true;
            } else {
                //未安裝
                return false;
            }
        } catch(e) {
            //未安裝
            return false;
        }
    }

}(mui, window.navigation = {}));