Android Tips

Android 打开外部高德、百度、腾讯地图进行导航

2018-03-20  本文已影响0人  呱呱_

前言

说明

高德地图

/**
 * 打开高德地图(公交出行,起点位置使用地图当前位置)
 * 
 * t = 0(驾车)= 1(公交)= 2(步行)= 3(骑行)= 4(火车)= 5(长途客车)
 *
 * @param dlat  终点纬度
 * @param dlon  终点经度
 * @param dname 终点名称
 */
private void openGaoDeMap(double dlat, double dlon, String dname) {
    if (checkMapAppsIsExist(this, "com.autonavi.minimap")) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setPackage("com.autonavi.minimap");
        intent.addCategory("android.intent.category.DEFAULT");
        intent.setData(Uri.parse("androidamap://route?sourceApplication=" + R.string.app_name
                + "&sname=我的位置&dlat=" + dlat
                + "&dlon=" + dlon
                + "&dname=" + dname
                + "&dev=0&m=0&t=1"));
        startActivity(intent);
    } else {
        ToastUtils.makeText(this, "高德地图未安装", false).show();
    }
}

百度地图

 * 打开百度地图(公交出行,起点位置使用地图当前位置)
 * 
 * mode = transit(公交)、driving(驾车)、walking(步行)和riding(骑行). 默认:driving
 * 当 mode=transit 时 : sy = 0:推荐路线 、 2:少换乘 、 3:少步行 、 4:不坐地铁 、 5:时间短 、 6:地铁优先
 *
 * @param dlat  终点纬度
 * @param dlon  终点经度
 * @param dname 终点名称
 */
private void openBaiduMap(double dlat, double dlon, String dname) {
    if (checkMapAppsIsExist(this, "com.baidu.BaiduMap")) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("baidumap://map/direction?origin=我的位置&destination=name:"
                + dname
                + "|latlng:" + dlat + "," + dlon
                + "&mode=transit&sy=3&index=0&target=1"));
        startActivity(intent);
    } else {
        ToastUtils.makeText(this, "百度地图未安装", false).show();
    }
}

腾讯地图

/**
 * 打开腾讯地图(公交出行,起点位置使用地图当前位置)
 * 
 * 公交:type=bus,policy有以下取值
 * 0:较快捷 、 1:少换乘 、 2:少步行 、 3:不坐地铁
 * 驾车:type=drive,policy有以下取值
 * 0:较快捷 、 1:无高速 、 2:距离短
 * policy的取值缺省为0
 *
 * @param dlat  终点纬度
 * @param dlon  终点经度
 * @param dname 终点名称
 */
private void openTencent(double dlat, double dlon, String dname) {
    if (checkMapAppsIsExist(this, "com.tencent.map")) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("qqmap://map/routeplan?type=bus&from=我的位置&fromcoord=0,0"
                + "&to=" + dname
                + "&tocoord=" + dlat + "," + dlon
                + "&policy=1&referer=myapp"));
        startActivity(intent);
    } else {
        ToastUtils.makeText(this, "腾讯地图未安装", false).show();
    }
}

检测地图是否安装

/**
 * 检测地图应用是否安装
 *
 * @param context
 * @param packagename
 * @return
 */
public boolean checkMapAppsIsExist(Context context, String packagename) {
    PackageInfo packageInfo;
    try {
        packageInfo = context.getPackageManager().getPackageInfo(packagename, 0);
    } catch (Exception e) {
        packageInfo = null;
        e.printStackTrace();
    }
    return packageInfo != null;
}
上一篇 下一篇

猜你喜欢

热点阅读