一、判断手机内安装的地图
/**判断是否安装目标应用*/
private boolean isInstallByread(String packageName) {
return new File("/data/data/" + packageName)
.exists();
}
/**
* 判断和打开地图
*/
public void navigationMap() {
//1.两个地图都安装了,让用户选择
boolean installBaidu = isInstallByread("com.baidu.BaiduMap");
boolean installAmap = isInstallByread("com.autonavi.minimap");
if (installBaidu && installAmap) {//两个地图都安装了 让用户进行选择
showSelectMap();
} else if (installBaidu) {//安装了百度地图
startBaiduMap();
} else if (installAmap) {//安装了高德地图
startAmapMap();
} else {//两个地图都没安装,使用web Api进行导航,不建议实现
//startWebMap();
T.showToast(mActivity, "您的手机未安装高德地图或者百度地图");
}
}
二、唤起高德地图导航
/**
* 唤起高德地图
*/
private void startAmapMap() {
try {
Intent intent = new Intent("android.intent.action.VIEW",
android.net.Uri.parse("androidamap://route?sourceApplication=导航demo" +
"&dlat=" + mEndLat +
"&dlon=" + mEndLng +
"&dname=" + name +
"&dev=0&t=2"));
intent.setPackage("com.autonavi.minimap");
mActivity.startActivity(intent);
} catch (Exception e) {
T.showToast(mActivity, "调起高德地图失败");
}
}
三、唤起百度地图导航
/**
* 移动APP调起Android百度地图方式
*/
private void startBaiduMap() {
try {
Intent intent = new Intent();
intent.setData(Uri.parse("baidumap://map/direction?destination=name:" + name + "|" +
"latlng:" + mEndLat + "," + mEndLng + "&mode=driving&car_type=TIME"));
mActivity.startActivity(intent); // 启动调用
} catch (Exception e) {
T.showToast(mActivity, "调起百度地图失败");
}
}
四、设置
//定位选项 LocationClientOption option = new LocationClientOption(); option.setAddrType("all"); //设置是否需要地址信息,默认为无地址 option.setIsNeedAddress(true); // 设置坐标类型// 返回的定位结果是百度经纬度,默认值gcj02 option.setCoorType("bd09ll"); //设置是否需要返回位置语义化信息,可以在BDLocation.getLocationDescribe()中得到数据 // ex:\"在天安门附近\", 可以用作地址信息的补充 option.setIsNeedLocationDescribe(true); //设置定位模式// 高精度 option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); //设置扫描间隔,单位是毫秒 当<1000(1s)时,定时定位无效 option.setScanSpan(2000); // 设置网络优先 option.setPriority(LocationClientOption.NetWorkFirst); // 打开gps option.setOpenGps(true); //禁止启用缓存定位 option.disableCache(true); // 使用设置 mLocClient.setLocOption(option); //开始定位 mLocClient.start();