跳转到高德地图或百度地图或高德网页导航

最近做一个新项目,需要用到导航,项目集成了高德的SDK,所以本来想直接用SDK内的导航方法,但是发现高德最新版的导航改版了,如果SDK内加上导航模块会使得整个项目大十几二十M,所以决定弃用SDK内的导航,最终决定,采用以下方案:

1.当手机内有高德地图app时,调起此app来导航
2.当手机内有百度地图app时,调起此app来导航
3.当手机内既没有高德地图app,也没有百度地图app时,调起浏览器,进入高德网页导航

代码很简单,如下:

1.

判断是否安装了高德地图,若有则传入导航参数并调起:

if (isInstallApk(mContext, "com.autonavi.minimap")) {// 是否安装了高德
    Intent intents = new Intent();
    intents.setData(Uri.parse("androidamap://navi?sourceApplication=nyx_super&lat=" +    wLatLng.latitude + "&lon=" + wLatLng.longitude + "&dev=0&style=2"));
    startActivity(intents); // 启动调用
    }

这里写图片描述
以上是uri内的参数说明,可根据自己的需求增加字段
高德关于此功能的网址:点这里

2.

判断是否安装了百度地图,若有则传入导航参数并调起:

if (isInstallApk(mContext, "com.baidu.BaiduMap")) {// 是否安装了百度地图
    Intent intent = new Intent();
    // 驾车导航
    intent.setData(Uri.parse("baidumap://map/navi?location=" + CommonUtils.bd_encrypt(wLatLng.latitude, wLatLng.longitude)));
    startActivity(intent); // 启动调用
            }

这里写图片描述
百度的此功能与高德不一样,不同的导航方式,其uri的前缀是不同的,具体可参考官网,网址如下:点这里

3.

当手机内既没有高德地图app,也没有百度地图app时,调起浏览器,进入高德网页导航

if (!isInstallApk(mContext, "com.autonavi.minimap")&&!isInstallApk(mContext, "com.baidu.BaiduMap")) {
        Intent intent = new Intent();
        intent.setAction("android.intent.action.VIEW");
        // 驾车导航
        intent.setData(Uri.parse("http://uri.amap.com/navigation?from=" + cLatLng.longitude + "," + cLatLng.latitude + "&to="+ wLatLng.longitude + "," + wLatLng.latitude + "&mode=car&src=nyx_super"));
        startActivity(intent); // 启动调用
            }

这里写图片描述
高德关于此功能的网址:点这里

最后把isInstallApk方法发出:

/** 判断手机中是否安装指定包名的软件 */
    public static boolean isInstallApk(Context context, String name) {
        List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0);
        for (int i = 0; i < packages.size(); i++) {
            PackageInfo packageInfo = packages.get(i);
            if (packageInfo.packageName.equals(name)) {
                return true;
            } else {
                continue;
            }
        }
        return false;
    }

看完如有帮助记得点赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值