欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

启动百度或高德地图并导航_通过Intent调用百度或高德地图客户端

程序员文章站 2022-03-01 16:03:56
...

我现在有这样一个需求、就是在我自己的程序中调用百度地图的客户端、并让它导航

本以为是一个很轻松的事情,谁知道网上没有相关代码、我百度官方查了一下

找到一些提示,最后通过代码的更改成功进行了调用


首页判断手机上是否有安装百度地图


//判断是否安装目标应用
private boolean isInstallByread(String packageName) {
	return new File("/data/data/" + packageName)
		.exists();
}


接下来就是通过Intent调用百度地址的代码了


Intent intent = new Intent();
//intent.setAction("android.intent.action.VIEW");
intent.setData(Uri
		.parse("baidumap://map/direction?origin=中关村&"
		+ "destination=五道口&mode=driving&region=北京"));

if (isInstallByread("com.baidu.BaiduMap")) {
	startActivity(intent); // 启动调用
	Log.e("GasStation", "百度地图客户端已经安装");
} else {
	Log.e("GasStation", "没有安装百度地图客户端");
}


另外如果有想使用更多功能的、比如搜索定位等功能、可以参考百度的官方API

在百度地图开放平台http://developer.baidu.com/map/uri-intro.htm


一般在项目里面、要尽可能是去满足多个不同的方案、所以在这个需求里面我们也得兼容高高德地图

首先还是要检测是否有安装高德地图、方法还是和上面提到的一样、调用isInstallByread 方法就ok了

下面是调用高德地图的代码


Intent intent = new Intent();
intent.setData(Uri
		.parse("androidamap://route?sourceApplication=softname" 
		+ "&slat=36.2&slon=116.1&sname=abc&dlat=36.3" 
		+ "&dlon=116.2&dname=def&dev=0&m=0&t=1&showType=1"));
// ComponentName component = new
// intent.setComponent(component)

if (isInstallByread("com.autonavi.minimap")) {
	startActivity(intent); // 启动调用
	Log.i("GasStation", "高德地图客户端已经安装");
} else {
	Log.d("GasStation", "没有安装高德地图客户端");
}
下面再给大家附上高德地图的 uri 帮助文档


http://lbs.amap.com/api/uri-api/android-uri-explain/

最后还是给大家献上源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1nhync 密码: f2t7