public class OpenGDMapUtil { private static SelectPicPopupWindow menuWindow; private static Activity mActivtiy; private static String sPosition; private static String ePosition; private static LatLng eLatLng; private static String type; private static LatLng sLatLng; /** * * @param mActivity 上下文 * @param sLatLng 开始点的坐标 * @param sPosition 开锁的位置 * @param ePosition 结束的位置 * @param eLatlng 结束的坐标 * @param type 行走的类型,车,步行,公交 */ public static boolean startNaviGao(Activity mActivity , LatLng sLatLng, String sPosition, String ePosition, LatLng eLatlng, String type) { OpenGDMapUtil.mActivtiy = mActivity; OpenGDMapUtil.sPosition = sPosition; OpenGDMapUtil.ePosition = ePosition; OpenGDMapUtil.eLatLng = eLatlng; OpenGDMapUtil.type = type; OpenGDMapUtil.sLatLng = sLatLng; if (isAvilible(mActivity, "com.autonavi.minimap")) {//包含高德 if(isAvilible(mActivity,"com.baidu.BaiduMap")){//包含百度 //TODO 弹出选择地图提示框 //实例化SelectPicPopupWindow return true;//返回true表示手机同时包含高德和百度地图 }else{//如果不是同时包含两个地图那么就选择手机安装的一个地图进行开启 openAppMap(mActivity , sLatLng.latitude, sLatLng.longitude , sPosition, eLatlng.latitude, eLatlng.longitude, ePosition); return false; } }else if(isAvilible(mActivity,"com.baidu.BaiduMap")) { openBaiduMap(mActivity , sLatLng.latitude, sLatLng.longitude , sPosition, eLatlng.latitude, eLatlng.longitude, ePosition); return false; }else{//如果手机没有地图的话就默认开启高德的网页地图进行导航 openWebGDNavi(mActivity, sPosition,sLatLng.latitude,sLatLng.longitude,ePosition,eLatlng.latitude ,eLatlng.longitude,type); return false; } } //为弹出窗口实现监听类 private static View.OnClickListener itemsOnClick = new View.OnClickListener(){ public void onClick(View v) { menuWindow.dismiss(); switch (v.getId()) { case R.id.btn_gd: //开启高德地图 openAppMap(mActivtiy ,sLatLng.latitude,sLatLng.longitude ,sPosition,eLatLng.latitude,eLatLng.longitude,ePosition); break; case R.id.btn_baidu: //开启百度 break; default: break; } } }; //验证各种导航地图是否安装 private static boolean isAvilible(Context context, String packageName) { //获取packagemanager final PackageManager packageManager = context.getPackageManager(); //获取所有已安装程序的包信息 List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0); //用于存储所有已安装程序的包名 List<String> packageNames = new ArrayList<String>(); //从pinfo中将包名字逐一取出,压入pName list中 if (packageInfos != null) { for (int i = 0; i < packageInfos.size(); i++) { String packName = packageInfos.get(i).packageName; packageNames.add(packName); } } //判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE return packageNames.contains(packageName); } /** * 打开高德 Web地图导航 */ private static void openWebGDNavi(Activity mActivity, String sPosition, double sLat, double sLng, String ePosition, double eLat, double eLng, String type) { StringBuffer stringBuffer = new StringBuffer("http://ditu.amap.com/dir?from[name]="+ sPosition+ "&from[lnglat]="+sLng+"%2c"+sLat+"&to[name]="+ePosition + "&to[lnglat]="+eLng+"%2c"+eLat+"&type="+type+"&policy=1"); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(stringBuffer.toString())); mActivity.startActivity(intent); } /** *打开app高德 */ public static void openAppMap(Activity mActivity, double slat, double slon, String sname, double dlat, double dlon, String dname){ Uri mapUri = Uri.parse(getGdMapUri("map", String.valueOf(slat), String.valueOf(slon), sname, String.valueOf(dlat), String.valueOf(dlon), dname)); Intent loction = new Intent(Intent.ACTION_VIEW, mapUri); mActivity.startActivity(loction); } /** * 开启百度 * @param mActivity * @param slat * @param slon * @param sname * @param dlat * @param dlon * @param dname */ public static void openBaiduMap(Activity mActivity, double slat, double slon, String sname, double dlat, double dlon, String dname){ Intent i1 = new Intent(); // 公交路线规划 i1.setData(Uri.parse("baidumap://map/direction?origin=name:"+sname+"|latlng:"+slat+","+slon+"&destination=name:"+dname+"&mode=transit&sy=3&index=0&target=1")); mActivity.startActivity(i1); } /** * 获取打开高德地图应用uri */ private static String getGdMapUri(String appName, String slat, String slon, String sname, String dlat, String dlon, String dname){ String uri = "androidamap://route?sourceApplication=%1$s&slat=%2$s&slon=%3$s&sname=%4$s&dlat=%5$s&dlon=%6$s&dname=%7$s&dev=0&m=0&t=2"; return String.format(uri, appName, slat, slon, sname, dlat, dlon, dname); } }
开启3方地图百度高德
最新推荐文章于 2024-09-09 09:32:59 发布