前言
收集常用的代码块,留存记录。此次代码块包含:唤起高德地图导航、唤起百度地图导航
代码
判断手机内安装的地图
/**判断是否安装目标应用*/
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: 默认偏好; 默认使用地图中已保存的路线偏好(缺省值)。 |
除缺省值外,若用户已勾选车牌限行,其他类型都会默认增加车牌限行的偏好。
最后
本文只写了驾车相关的导航实例,剩余的公交、步行、骑行可参考官方文档。
官方文档:
未完待续、后续补充!
我的博客地址