开启第三方地图(高德)

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);
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值