Android 開發中的程式碼片段(3)地圖操作相關
前言
收集常用的程式碼塊,留存記錄。此次程式碼塊包含:喚起高德地圖導航、喚起百度地圖導航
程式碼
判斷手機內安裝的地圖
/**判斷是否安裝目標應用*/ private boolean isInstallByread(String packageName) { return new File("/data/data/" + packageName) .exists(); } /** * 判斷和開啟地圖 */ public void navigationMap() { //1.兩個地圖都安裝了,讓使用者選擇 boolean installBaidu = isInstallByread("com.baidu.BaiduMap"); boolean installAmap = isInstallByread("com.autonavi.minimap"); if (installBaidu && installAmap) {//兩個地圖都安裝了 讓使用者進行選擇 showSelectMap(); } else if (installBaidu) {//安裝了百度地圖 startBaiduMap(); } else if (installAmap) {//安裝了高德地圖 startAmapMap(); } else {//兩個地圖都沒安裝,使用web Api進行導航,不建議實現 //startWebMap(); T.showToast(mActivity, "您的手機未安裝高德地圖或者百度地圖"); } }
喚起高德地圖導航(駕車)
/** * 喚起高德地圖 */ private void startAmapMap() { try { Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("androidamap://route?sourceApplication=導航demo" + "&dlat=" + mEndLat + "&dlon=" + mEndLng + "&dname=" + name + "&dev=0&t=2")); intent.setPackage("com.autonavi.minimap"); mActivity.startActivity(intent); } catch (Exception e) { T.showToast(mActivity, "調起高德地圖失敗"); } }
相關引數:
|引數|說明|是否必填|
|——|—–|———|
|sourceApplication|當前app的名字|
|dlat|緯度|
|dlon|經度|
|name|終點的名稱|
|dev|是否偏移(0:lat 和 lon 是已經加密後的,不需要國測加密; 1:需要國測加密)|
|t|導航方式:
0 速度快
1 費用少
2 路程短;
3 不走高速
4 躲避擁堵
5 不走高速且避免收費
6 不走高速且躲避擁堵
7 躲避收費和擁堵
8 不走高速躲避收費和擁堵|
效果如下:
喚起百度地圖導航(駕車)
/** * 移動APP調起Android百度地圖方式 */ private void startBaiduMap() { try { Intent intent = new Intent(); intent.setData(Uri.parse("baidumap://map/direction?destination=name:" + name + "|" + "latlng:" + mEndLat + "," + mEndLng + "&mode=driving&car_type=TIME")); mActivity.startActivity(intent); // 啟動呼叫 } catch (Exception e) { T.showToast(mActivity, "調起百度地圖失敗"); } }
相關引數:
|引數|說明|
|——|—–|
|destination|目的地名稱|
|latlng|緯度,進度 拼接字串
|mode|導航模式:
transit(公交)
driving(駕車)
walking(步行)
riding(騎行)
|car_type|駕車路線規劃型別:
BLK:躲避擁堵(自駕)
TIME:高速優先(自駕)
DIS:不走高速(自駕)
FEE:少收費(自駕)
DEFAULT: 預設偏好;
預設使用地圖中已儲存的路線偏好(預設值)。
除預設值外,若使用者已勾選車牌限行,其他型別都會預設增加車牌限行的偏好。
最後
本文只寫了駕車相關的導航例項,剩餘的公交、步行、騎行可參考官方文件。
官方文件:
- ofollow,noindex">高德地圖
- 百度地圖
未完待續、後續補充!
我的部落格地址