原文地址:https://blog.csdn.net/qq_34908107/article/details/53537524
Android调起百度和高德地图导航(不导入SDK)
在开发项目的过程中,我们难免会遇到导航的功能,如果我们只需要某一个地方用到此功能,我们就不必去集成地图的SDK,因为我们需要的功能不多,并且集成SDK后生成的apk文件会增大很多。所以我们直接去调用手机里面安装好的地图。
这是判断是否安装了目标应用的方法.
-
/**
-
* 判断是否安装目标应用
-
* @param packageName 目标应用安装后的包名
-
* @return 是否已安装目标应用
-
*/
-
private boolean isInstallByread(String packageName) {
-
return new File( "/data/data/" + packageName).exists();
-
}
调用手机的百度地图:是从当前位置到你需要导航到的位置,需要当前位置和终点位置的经纬度.
-
btn_baiduditu.setOnClickListener(new View.OnClickListener() {
-
-
public void onClick(View v) {
-
try {
-
intent=Intent.getIntent( "intent://map/direction?origin=name:我的位置|latlng:"+latitude+ ","+longtitude+ "&destination=name:奥一农场|latlng:40.203568,116.312868&mode=driving®ion=北京&src=thirdapp.navi.yourCompanyName.yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
-
if (isInstallByread( "com.baidu.BaiduMap")){
-
startActivity(intent); //启动调用
-
Log.e( "GasStation", "百度地图客户端已经安装");
-
} else {
-
Toast.makeText(getApplicationContext(), "请安装百度地图",Toast.LENGTH_SHORT).show();
-
}
-
} catch (URISyntaxException e) {
-
e.printStackTrace();
-
}
-
}
-
});
调用手机的高德地图:高德地图只需要确定你的终点位置就可以了
-
//高德地图的启动
-
btn_gaodeditu.setOnClickListener( new View.OnClickListener() {
-
-
public void onClick(View v) {
-
if (isInstallByread( "com.autonavi.minimap")) {
-
Intent intent1 = new Intent();
-
intent1.setAction(Intent.ACTION_VIEW);
-
intent1.addCategory(Intent.CATEGORY_DEFAULT);
-
//将功能Scheme以URI的方式传入data
-
Uri uri = Uri.parse( "androidamap://navi?sourceApplication=appname&poiname=fangheng&lat=40.203568&lon=116.312868&dev=1&style=2");
-
intent1.setData(uri);
-
//启动该页面即可
-
startActivity(intent1);
-
} else {
-
Toast.makeText(getApplicationContext(), "请安装高德地图", Toast.LENGTH_SHORT).show();
-
}
-
}
-
});
百度和高德里面的字符串都是固定的格式,不清楚的可以去百度和高德的开发者平台WEB端的Android类去看。