Android implementa navegación de mapas de terceros (Baidu, Gaode)

Muchos requisitos del proyecto requieren que implemente la función de navegación de direcciones. Si no hay un requisito difícil, sin duda es el más conveniente saltar directamente a un tercero. A continuación, hablemos sobre cómo lograr el salto de navegación de mapa de terceros

1. Primero determine si el dispositivo está instalado con mapas de Baidu y Gaode. El método de evaluación es el siguiente

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

2. Inicie la navegación del mapa Baidu

/**
     * 跳转到百度地图
     * @param context
     * @param latitude 纬度
     * @param longtitude 经度
     * @param address 终点
     * */
    private void goBaiduMap(Context context,double latitude, double longtitude, String address) {
        if (isInstallApk(context, "com.baidu.BaiduMap")) {
            try {
                Intent intent = Intent.getIntent("intent://map/direction?destination=latlng:"
                        + latitude + ","
                        + longtitude + "|name:" + address + //终点:该地址会在导航页面的终点输入框显示
                        "&mode=driving&" + //选择导航方式 此处为驾驶
                        "region=" + //
                        "&src=#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
                context.startActivity(intent);
            } catch (URISyntaxException e) {
                Log.e("goError", e.getMessage());
            }
        } else {
            Toast.makeText(context, "您尚未安装百度地图", Toast.LENGTH_SHORT).show();
        }
    }

3. Inicie la navegación del mapa de alta moral

/**
     * 跳转到高德地图
     * @param context
     * @param latitude 纬度
     * @param longtitude 经度
     * @param address 终点
     * */
    private void goGaodeMap(Context context,double latitude, double longtitude, String address) {
        if (isInstallApk(context, "com.autonavi.minimap")) {
            try {
                Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=&poiname=" + address + "&lat=" + latitude
                        + "&lon=" + longtitude + "&dev=0");
                context.startActivity(intent);
            } catch (URISyntaxException e) {
                Log.e("goError", e.getMessage());
            }
        } else {
            Toast.makeText(context, "您尚未安装高德地图", Toast.LENGTH_SHORT).show();
        }
    }

 Es así de simple, por supuesto, hay usos más complicados, agregue otros parámetros

http://lbsyun.baidu.com/index.php?title=uri/api/android

Por cierto dar una dirección de prueba

goBaiduMap(MainActivity.this,22.618458,114.033342,"深圳北站");

Luego da otra forma:

De acuerdo con la documentación oficial

Intent i1 = new Intent();
double lat = 22.568287;
double lnt = 114.110793;
double lat2 = 22.562236;
double lnt2 = 114.110895;
String origin = String.format("origin=%s,%s", 0.0, 0.0);
String destination = String.format("&destination=%s,%s", lat2, lnt2);
// 骑行导航
i1.setData(Uri.parse("baidumap://map/bikenavi?" + origin + destination + "&coord_type=bd09ll&src=andr.baidu.openAPIdemo"));
startActivity(i1);

El valor de origen 0.0, 0.0 representa la posición inicial predeterminada es la posición actual, el destino es la posición final

Publicado 65 artículos originales · 80 elogiados · 70,000 + visitas

Supongo que te gusta

Origin blog.csdn.net/lovelixue/article/details/105537638
Recomendado
Clasificación