之前因为公司项目中需要做定位和导航,所以想着在项目中自定义地图,发现这样不但费时费力,而且做得也没有多么好,就直接跳转至第三方应用了。跳转需要传递参数。
对百度地图来说:也可以参考百度API开发文档
public void invokingBD(){
// com.baidu.BaiduMap这是高德地图的包名
//调起百度地图客户端try {
Intent intent = null;
try {
String uri = "intent://map/direction?origin=latlng:0,0|name:我的位置&destination=" + "需要导航的地址" + "&mode=drivingion=" + "城市" + "&referer=Autohome|GasStation#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end";
intent = Intent.getIntent(uri);
} catch (URISyntaxException e) {
e.printStackTrace();
}
if(isInstallByread("com.baidu.BaiduMap")){
startActivity(intent); //启动调用
Log.e("GasStation", "百度地图客户端已经安装") ;
}else{
Toast.makeText(mContext, "没有安装百度地图客户端", Toast.LENGTH_SHORT).show();
}
}
对高德地图来说:
高德导航地址可以参考:http://lbs.amap.com/api/amap-mobile/guide/android/search
public void invokingGD(){
// com.autonavi.minimap这是高德地图的包名
Intent intent = new Intent("android.intent.action.VIEW",android.net.Uri.parse("androidamap://navi?sourceApplication=应用名称&lat="+ "&dev=0"));
intent.setPackage("com.autonavi.minimap");
intent.setData(Uri.parse("androidamap://poi?sourceApplication=softname&keywords="+需要导航的地址));
if(isInstallByread("com.autonavi.minimap")){
startActivity(intent);
Log.e("GasStation", "高德地图客户端已经安装") ;
}else{
Toast.makeText(mContext, "没有安装高德地图客户端", Toast.LENGTH_SHORT).show();
}
}
在执行导航前必须先判断手机应用是否安装了百度地图或高德地图才能执行导航,否则会出现崩溃现象。
/**
* 判断是否安装目标应用
* @param packageName 目标应用安装后的包名
* @return 是否已安装目标应用
*/
private boolean isInstallByread(String packageName) {
return new File("/data/data/" + packageName).exists();
}
网友评论