项目开发过程中需要调用地图应用进行导航,通常会使用百度地图和高德地图,调用地图看官方文档就可以搞定。
首先根据包名判断地图应用是否安装:
- 百度地图包名:
com.baidu.BaiduMap
- 高德地图包名:
com.autonavi.minimap
/**
* 根据包名判断某个app是否安装
* @param packageName
* @return
*/
public static boolean isAppInstalled(Context context,String packageName){
PackageInfo packageInfo;
try {
packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
} catch (PackageManager.NameNotFoundException e) {
packageInfo=null;
e.printStackTrace();
}
if(packageInfo==null){
return false;
}else {
return true;
}
}
判断完应用是否安装后就可以调用API了
百度地图
百度地图 doc:http://lbsyun.baidu.com/index.php?title=uri/api/android
代码实现:
/**
* 跳转到百度地图
* @param context 使用Application
* @param latitude
* @param longitude
*/
public void goToBMap(Context context, String latitude,String longitude) {
String uri = "baidumap://map/direction"
+ "?origin=我的位置"
+"&destination=name:终点|latlng:"+latitude+","+longitude
+"&coord_type=bd09ll"
+ "&mode=driving"
+ "&src=andr.companyName.appName";//src为统计来源必填,companyName、appName是公司名和应用名
Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(uri));
intent.addCategory("android.intent.category.DEFAULT");
context.startActivity(intent);
}
//具体参数可以参考官方文档
高德地图
高德地图 doc:https://lbs.amap.com/api/amap-mobile/guide/android/route
代码实现:
/**
* 跳转到高德地图
* @param context 使用Application
* @param latitude
* @param longitude
*/
public void goToBMap(Context context, String latitude,String longitude) {
//默认驾车
String uri = "amapuri://route/plan/"
+ "?dlat="+ latitude+"&dlon="+longitude
+ "&sname=我的位置"
+ "&dname=终点"
+ "&dev=1"
+ "&t=0";
Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(uri));
intent.addCategory("android.intent.category.DEFAULT");
intent.setPackage("com.autonavi.minimap");
context.startActivity(intent);
}
//具体参数可以参考官方文档
通过上面的操作就可以实现调用手机上安装的地图应用导航。