调用百度的API,实现一些功能,比较复杂,直接使用Intent的方式调用手机上安装的百度地图客户端,访问我们所需要的路径规划等,比较方便。
public void navigate(View view) {
// 调起百度地图客户端
try {
// Intent intent =
// Intent.getIntent("intent://map/direction?origin=latlng:34.264642646862,108.95108518068|name:我家&destination=大雁塔&mode=driving®ion=西安&referer=Autohome|GasStation#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
Intent intent = Intent
.getIntent("intent://map/direction?origin=latlng:"
+ GPSService.lat
+ ","
+ GPSService.nat
+ "<经度>|name:"+GPSService.add+"&destination="+endStr+"&mode=driving®ion=北京&src=com.rongzhitong_1#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
if (isInstallByread("com.baidu.BaiduMap")) {
startActivity(intent); // 启动调用
Log.e("GasStation", "百度地图客户端已经安装");
} else {
Toast.makeText(getApplicationContext(), "请安装百度地图客户端", 0).show();
Log.e("GasStation", "没有安装百度地图客户端");
// BaiduMapNavigation.GetLatestBaiduMapApp(RoutePlanDemo.this);
}
} catch (Exception e) {
e.printStackTrace();
}
}
但是,若客户端没有安装了百度地图客户端就会报 No Activity.... 直接会导致程序挂掉,这是开发者不希望看到的.所以在调用之前判断该手机是否安装了百度地图客户端,我们知道百度的包名为 com.baidu.BaiduMap
所以通过下面的方法进行判断:
/**
* 判断是否安装目标应用
*
* @param packageName
* 目标应用安装后的包名
* @return 是否已安装目标应用
*/
private boolean isInstallByread(String packageName) {
return new File("/data/data/" + packageName).exists();
}
我们可以根据配置不同的url的参数,开启不同的功能。
我的intent是做导航用的。其他地图功能自行实现(其他功能需要的话就自行参考百度URL-API)。附上链接: http://developer.baidu.com/map/uri-intro.htm#idmykey1
高德地图类似