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() {@Overridepublic 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() {@Overridepublic 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的方式传入dataUri 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类去看。