开启第三方地图(高德)

来源:互联网 发布:期货交易策略测试软件 编辑:程序博客网 时间:2024/04/30 01:23
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);    }}
阅读全文
0 0
原创粉丝点击