應用內(nèi)調(diào)用三大主流地圖軟件并導航

一、準備

通常地段化,在打開一個第三方軟件前,要判斷它是否安裝凤类,如果沒安裝穗泵,要么給出相應提示,要么跳轉(zhuǎn)到應用市場谜疤。這里我們簡單點,直接給提示夷磕。在下面的方法中,傳入上下文和要判斷的應用的包名:

    public static boolean isPackageInstalled(Context mContext, String packagename) {
        PackageInfo packageInfo = null;
        try {
            packageInfo = mContext.getPackageManager().getPackageInfo(packagename, 0);
        } catch (PackageManager.NameNotFoundException e) {
            packageInfo = null;
            e.printStackTrace();
        } finally {
            Log.i("app is install?--->", String.valueOf(packageInfo!=null));
            return packageInfo != null;
        }
    }

二尺棋、開始

創(chuàng)建打開第三方應用并傳遞參數(shù)的方法(以高德地圖為例)

    /**
     * 啟動高德App進行導航
     * @param lat  目的地緯度
     * @param lng  目的地經(jīng)度
     */
    public static void openGaoDeNavi(double lat,double lng) {
        StringBuffer stringBuffer = new StringBuffer("androidamap://navi?sourceApplication=")
                .append("amap").append("&lat=").append(lat)
                .append("&lon=").append(lng)
                .append("&dev=").append(1)
                .append("&style=").append(0);
        Intent intent = new Intent(Intent.ACTION_VIEW, android.net.Uri.parse(stringBuffer.toString()));
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setPackage("com.autonavi.minimap");
        cont.startActivity(intent);
    }

三绵跷、使用

 if (isPackageInstalled(MainActivity.this,"com.autonavi.minimap"))
          {
               MapUtils.openGaoDeNavi(32.543401,101.111101);
           }
  else
            Toast.makeText(MainActivity.this, "你沒安裝高德地圖", Toast.LENGTH_SHORT).show();

四、封裝工具類MapUtils.java

public class MapUtils {

    @SuppressLint("StaticFieldLeak")
    private static Context cont;

    public static void init(Context context){
        cont=context;
    }

    /**
     * 啟動高德App進行導航
     * @param lat  目的地緯度
     * @param lng  目的地經(jīng)度
     */
    public static void openGaoDeNavi(double lat,double lng) {
        StringBuffer stringBuffer = new StringBuffer("androidamap://navi?sourceApplication=")
                .append("amap").append("&lat=").append(lat)
                .append("&lon=").append(lng)
                .append("&dev=").append(1)
                .append("&style=").append(0);
        Intent intent = new Intent(Intent.ACTION_VIEW, android.net.Uri.parse(stringBuffer.toString()));
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setPackage("com.autonavi.minimap");
        cont.startActivity(intent);
    }

    /**
     * 打開騰訊地圖app并導航
     * @param lat  目的地緯度
     * @param lng  目的地經(jīng)度
     */
    public static void openTencentNavi(double lat,double lng){
        StringBuffer stringBuffer= new StringBuffer("qqmap://map/routeplan?type=drive")
                .append("&fromcoord=CurrentLocation")
                .append("&tocoord=").append(lat).append(",").append(lng)
//                .append("&to=吉庚")
                .append("&referer=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77");

        Intent intent = new Intent(Intent.ACTION_VIEW, android.net.Uri.parse(stringBuffer.toString()));
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setPackage("com.tencent.map");
        cont.startActivity(intent);
    }


    /**
     * 打開百度地圖導航客戶端
     * @param lat  目的地緯度
     * @param lng  目的地經(jīng)度
     */
    public static void openBaiduNavi(double lat,double lng) {
        StringBuffer stringBuffer = new StringBuffer("baidumap://map/navi?location=")
                .append(lat).append(",")
                .append(lng)
                .append("&type=TIME");
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(stringBuffer.toString()));
        intent.setPackage("com.baidu.BaiduMap");
        cont.startActivity(intent);
    }
}

五、特別鳴謝

安卓通過經(jīng)緯度净当,實現(xiàn)intent調(diào)用百度,高德俘闯,Google地圖客戶端實現(xiàn)駕車導航功能
Android App調(diào)用跳轉(zhuǎn)百度地圖忽冻、高德地圖真朗、騰訊地圖進行目的地導航

六僧诚、參考文獻

各大地圖的詳細配置參數(shù)秀菱,可以查閱官方接口文檔
1蹭睡、百度地圖:http://lbsyun.baidu.com/index.php?title=uri/api/android
2赶么、高德地圖:https://lbs.amap.com/api/amap-mobile/guide/android/navigation
3、騰訊地圖:http://lbs.qq.com/uri_v1/guide-mobile-navAndRoute.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末清钥,一起剝皮案震驚了整個濱河市放闺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌怖侦,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搬葬,死亡現(xiàn)場離奇詭異艳悔,居然都是意外死亡,警方通過查閱死者的電腦和手機猜年,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門乔外,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人袁稽,你說我怎么就攤上這事⊥破” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵莲组,是天一觀的道長暖夭。 經(jīng)常有香客問我撵孤,道長竭望,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任闭专,我火速辦了婚禮旧烧,結(jié)果婚禮上影钉,老公的妹妹穿的比我還像新娘掘剪。我一直安慰自己,他們只是感情好廉赔,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布予权。 她就那樣靜靜地躺著,像睡著了一般扫腺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上攒至,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天躁劣,我揣著相機與錄音,去河邊找鬼账忘。 笑死,一個胖子當著我的面吹牛溉浙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戳稽,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼期升,長吁一口氣:“原來是場噩夢啊……” “哼互躬!你這毒婦竟也來了颂郎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤诞吱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沼瘫,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡耿戚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坛猪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡墅茉,死狀恐怖呜呐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蘑辑,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布绷旗,位于F島的核電站副砍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏址晕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一启搂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胳赌,春花似錦、人聲如沸疑苫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挺勿。三九已至曲横,卻和暖如春不瓶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚊丐。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工麦备, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凛篙。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像膀捷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子全庸,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容