Android應用調起三方地圖進行導航


當項目中需要用到地點導航,可能你需要集成三方地圖,但現在更多的應用的做法是直接調起手機中已經安裝好的地圖,高德,百度等等,這樣比集成三方地圖來得更快,可行性也更高,下面代碼都是參考網絡上的,自己整理了下

一.使用谷歌地圖

Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
        Uri.parse("http://ditu.google.cn/maps?hl=zh&mrt=loc&q=31.1198723,121.1099877(上海青浦大街100號)"));

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
        & Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

intent.setClassName("com.google.android.apps.maps",
        "com.google.android.maps.MapsActivity");

startActivity(intent);



二、使用三方地圖

判斷地圖應用是否安裝

private boolean isInstallByread(String packageName) {
    return new File("/data/data/" + packageName).exists();
}


1.高德地圖

private void openGaode(){
    try {
        if (isInstallByread("com.autonavi.minimap")) {
            Intent intent = new Intent(
                    "android.intent.action.VIEW",
                    android.net.Uri.parse(
                    "androidamap://route?sourceApplication=應用名稱" + "&dlat="+ currentLatitude//終點的經度
                    + "&dlon="+ currentLongitude//終點的緯度
                            +"&dname=終點地名"
            + "&dev=0" + "&t=1"));
            startActivity(intent);
        } else {
            Toast.makeText(MainActivity.this, "沒有安裝百度地圖客戶端,請先下載該地圖應用", Toast.LENGTH_SHORT).show();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}



2.百度地圖

private void openBaidu(){
    try {
        if (isInstallByread("com.baidu.BaiduMap")) {
            Intent intent = new Intent();
            intent.setData(Uri.parse("baidumap://map/direction?origin=name:我的位置|latlng:"
                    +locLongitude//起始點經度
                    +","
            +locLatitude//起始點緯度
            +"&destination="
            +currentLatitude//終點緯度
            +","
            +currentLongitude//終點經度
            +"&mode=transit&sy=0&index=0&target=1"));
            intent.setPackage("com.baidu.BaiduMap");
            startActivity(intent); // 啟動調用
        } else {
            Toast.makeText(MainActivity.this, "沒有安裝百度地圖客戶端,請先下載該地圖應用", Toast.LENGTH_SHORT).show();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}



個人測試的時候僅測試了下高德和百度的都可以,需要注意的是高德地圖的經緯度和百度地圖的經緯度存在差異,也就是說,假如你的項目使用高德api獲取到的經緯度,不能直接拿到百度地圖來進行導航,需要進行轉換,代碼可以網上查,挺多,反之亦然。谷歌地圖的啟動的時候一直提示網絡無法連接,因為是外網,需要翻牆,估計在項目中用到不多,手機上如果沒有谷歌地圖的話,啟動會報ActivityNotFoundException,try catch下就好了,代碼僅供參考,有建議或意見歡迎提出





注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: