67

Android 开发中的代码片段(3)地图操作相关

 5 years ago
source link: http://fullscreendeveloper.cn/articles/2018/09/15/1537024433520.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

收集常用的代码块,留存记录。此次代码块包含:唤起高德地图导航、唤起百度地图导航

代码

判断手机内安装的地图

/**判断是否安装目标应用*/
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 不走高速躲避收费和拥堵|

效果如下:

UV7fMba.png!web

唤起百度地图导航(驾车)

/**
 * 移动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: 默认偏好;

默认使用地图中已保存的路线偏好(缺省值)。

除缺省值外,若用户已勾选车牌限行,其他类型都会默认增加车牌限行的偏好。

最后

本文只写了驾车相关的导航实例,剩余的公交、步行、骑行可参考官方文档。

官方文档:

- 高德地图

- 百度地图

未完待续、后续补充!

我的博客地址

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK