package com.baidu.mapapi.utils.route; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.util.Log; import com.baidu.mapapi.navi.IllegalNaviArgumentException; import com.baidu.mapapi.utils.OpenClientUtil; import com.baidu.mapapi.utils.c; import com.baidu.mapapi.utils.poi.IllegalPoiSearchArgumentException; import com.baidu.mapapi.utils.route.RouteParaOption; public class BaiduMapRoutePlan { private static boolean a = true; private static void a(RouteParaOption routeParaOption, Context context, int i) { StringBuilder sb = new StringBuilder(); sb.append("http://api.map.baidu.com/direction?"); sb.append("origin="); if (routeParaOption.a != null && routeParaOption.c != null && !routeParaOption.c.equals("")) { sb.append("latlng:"); sb.append(routeParaOption.a.latitude); sb.append(","); sb.append(routeParaOption.a.longitude); sb.append("|"); sb.append("name:"); sb.append(routeParaOption.c); } else if (routeParaOption.a != null) { sb.append(routeParaOption.a.latitude); sb.append(","); sb.append(routeParaOption.a.longitude); } else { sb.append(routeParaOption.c); } sb.append("&destination="); if (routeParaOption.b != null && routeParaOption.d != null && !routeParaOption.d.equals("")) { sb.append("latlng:"); sb.append(routeParaOption.b.latitude); sb.append(","); sb.append(routeParaOption.b.longitude); sb.append("|"); sb.append("name:"); sb.append(routeParaOption.d); } else if (routeParaOption.b != null) { sb.append(routeParaOption.b.latitude); sb.append(","); sb.append(routeParaOption.b.longitude); } else { sb.append(routeParaOption.d); } String str = ""; switch (i) { case 0: str = "driving"; break; case 1: str = "transit"; break; case 2: str = "walking"; break; } sb.append("&mode="); sb.append(str); sb.append("®ion="); if (routeParaOption.getCityName() == null || routeParaOption.getCityName().equals("")) { sb.append("全国"); } else { sb.append(routeParaOption.getCityName()); } sb.append("&output=html"); sb.append("&src="); sb.append(context.getPackageName()); Uri parse = Uri.parse(sb.toString()); Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.setFlags(268435456); intent.setData(parse); context.startActivity(intent); } public static void finish(Context context) { if (context != null) { c.a(context); } } public static boolean openBaiduMapDrivingRoute(RouteParaOption routeParaOption, Context context) { if (routeParaOption == null || context == null) { throw new IllegalPoiSearchArgumentException("para or context can not be null."); } else if (routeParaOption.b == null && routeParaOption.a == null && routeParaOption.d == null && routeParaOption.c == null) { throw new IllegalNaviArgumentException("startPoint and endPoint and endName and startName not all null."); } else if (routeParaOption.c == null && routeParaOption.a == null) { throw new IllegalNaviArgumentException("startPoint and startName not all null."); } else if (routeParaOption.d == null && routeParaOption.b == null) { throw new IllegalNaviArgumentException("endPoint and endName not all null."); } else if (((routeParaOption.c == null || routeParaOption.c.equals("")) && routeParaOption.a == null) || ((routeParaOption.d == null || routeParaOption.d.equals("")) && routeParaOption.b == null)) { Log.e(BaiduMapRoutePlan.class.getName(), "poi startName or endName can not be empty string while pt is null"); return false; } else { if (routeParaOption.f == null) { routeParaOption.f = RouteParaOption.EBusStrategyType.bus_recommend_way; } int baiduMapVersion = OpenClientUtil.getBaiduMapVersion(context); if (baiduMapVersion == 0) { Log.e("baidumapsdk", "BaiduMap app is not installed."); if (a) { a(routeParaOption, context, 0); return true; } throw new IllegalPoiSearchArgumentException("BaiduMap app is not installed."); } else if (baiduMapVersion >= 810) { return c.a(routeParaOption, context, 0); } else { Log.e("baidumapsdk", "Baidumap app version is too lowl.Version is greater than 8.1"); if (a) { a(routeParaOption, context, 0); return true; } throw new IllegalPoiSearchArgumentException("Baidumap app version is too lowl.Version is greater than 8.1"); } } } public static boolean openBaiduMapTransitRoute(RouteParaOption routeParaOption, Context context) { if (routeParaOption == null || context == null) { throw new IllegalPoiSearchArgumentException("para or context can not be null."); } else if (routeParaOption.b == null && routeParaOption.a == null && routeParaOption.d == null && routeParaOption.c == null) { throw new IllegalNaviArgumentException("startPoint and endPoint and endName and startName not all null."); } else if (routeParaOption.c == null && routeParaOption.a == null) { throw new IllegalNaviArgumentException("startPoint and startName not all null."); } else if (routeParaOption.d == null && routeParaOption.b == null) { throw new IllegalNaviArgumentException("endPoint and endName not all null."); } else if (((routeParaOption.c == null || routeParaOption.c.equals("")) && routeParaOption.a == null) || ((routeParaOption.d == null || routeParaOption.d.equals("")) && routeParaOption.b == null)) { Log.e(BaiduMapRoutePlan.class.getName(), "poi startName or endName can not be empty string while pt is null"); return false; } else { if (routeParaOption.f == null) { routeParaOption.f = RouteParaOption.EBusStrategyType.bus_recommend_way; } int baiduMapVersion = OpenClientUtil.getBaiduMapVersion(context); if (baiduMapVersion == 0) { Log.e("baidumapsdk", "BaiduMap app is not installed."); if (a) { a(routeParaOption, context, 1); return true; } throw new IllegalPoiSearchArgumentException("BaiduMap app is not installed."); } else if (baiduMapVersion >= 810) { return c.a(routeParaOption, context, 1); } else { Log.e("baidumapsdk", "Baidumap app version is too lowl.Version is greater than 8.1"); if (a) { a(routeParaOption, context, 1); return true; } throw new IllegalPoiSearchArgumentException("Baidumap app version is too lowl.Version is greater than 8.1"); } } } public static boolean openBaiduMapWalkingRoute(RouteParaOption routeParaOption, Context context) { if (routeParaOption == null || context == null) { throw new IllegalPoiSearchArgumentException("para or context can not be null."); } else if (routeParaOption.b == null && routeParaOption.a == null && routeParaOption.d == null && routeParaOption.c == null) { throw new IllegalNaviArgumentException("startPoint and endPoint and endName and startName not all null."); } else if (routeParaOption.c == null && routeParaOption.a == null) { throw new IllegalNaviArgumentException("startPoint and startName not all null."); } else if (routeParaOption.d == null && routeParaOption.b == null) { throw new IllegalNaviArgumentException("endPoint and endName not all null."); } else if (((routeParaOption.c == null || routeParaOption.c.equals("")) && routeParaOption.a == null) || ((routeParaOption.d == null || routeParaOption.d.equals("")) && routeParaOption.b == null)) { Log.e(BaiduMapRoutePlan.class.getName(), "poi startName or endName can not be empty string while pt is null"); return false; } else { if (routeParaOption.f == null) { routeParaOption.f = RouteParaOption.EBusStrategyType.bus_recommend_way; } int baiduMapVersion = OpenClientUtil.getBaiduMapVersion(context); if (baiduMapVersion == 0) { Log.e("baidumapsdk", "BaiduMap app is not installed."); if (a) { a(routeParaOption, context, 2); return true; } throw new IllegalPoiSearchArgumentException("BaiduMap app is not installed."); } else if (baiduMapVersion >= 810) { return c.a(routeParaOption, context, 2); } else { Log.e("baidumapsdk", "Baidumap app version is too lowl.Version is greater than 8.1"); if (a) { a(routeParaOption, context, 2); return true; } throw new IllegalPoiSearchArgumentException("Baidumap app version is too lowl.Version is greater than 8.1"); } } } public static void setSupportWebRoute(boolean z) { a = z; } }