public class OpenGDMapUtil {
/**
*
* @param mActivity 上下文
* @param sLatLng 开始点的坐标
* @param sPosition 开锁的位置
* @param ePosition 结束的位置
* @param eLatlng 结束的坐标
* @param type 行走的类型,车,步行,公交
*/
public static void startNaviGao(Activity mActivity
, LatLng sLatLng,
String sPosition,
String ePosition, LatLng eLatlng, String type) {
if (isAvilible(mActivity, "com.autonavi.minimap")) {
openAppMap(mActivity
,sLatLng.latitude,sLatLng.longitude
,sPosition,eLatlng.latitude,eLatlng.longitude,ePosition);
} else {
openWebGDNavi(mActivity,
sPosition,sLatLng.latitude,sLatLng.longitude,ePosition,eLatlng.latitude
,eLatlng.longitude,type);
}
}
//验证各种导航地图是否安装
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高德
*/
private 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);
}
/**
* 获取打开高德地图应用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);
}
}