Android集成高德地图导航SDK、实现App内进行导航、打开高德App导航

这篇文章就主要来讲一下集成高德的导航SDK,实现app内导航;这样就不用调用高德的App了

一、申请key之类的这里就不说了自己去申请就ok

  • 高德开放平台
  • 高德开放平台—导航sdk
  • 高德开放平台—导航sdk下载

二、我这下载的SDK如下,只有3D地图和导航SDK这两个

Android集成高德地图导航SDK、实现App内进行导航、打开高德App导航_第1张图片

三、配置工程导入导航SDK和so库文件

Android集成高德地图导航SDK、实现App内进行导航、打开高德App导航_第2张图片

  • 配置Manifest.xml添加权限

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<uses-permission android:name="android.permission.WAKE_LOCK"/>
  • 配置Manifest.xml、添加高德SDK的key和导航Activity
<meta-data
    android:name="com.amap.api.v2.apikey"
    android:value="你申请的KEY" />
    


四、因为我这里没有需要定制导航的需求所以直接使用高德封装好的导航组件直接使用

导航组件—文档地址

发起导航:给定起点、途经点、终点

  • 如果不传入起点,那么将会使用当前位置
  • 途径点可以不传
	/**
     * 路线规划
     *
     * @param slat 起点纬度
     * @param slon 起点经度
     * @param dlat 终点纬度
     * @param dlon 终点经度
     */
    public void navigation(Context context, double slat, double slon, double dlat, double dlon) {
        Poi start = null;
        //如果设置了起点
        if (slat != 0 && slon != 0) {
            start = new Poi("起点名称", new LatLng(slat, slon), "");
        }
        Poi end = new Poi("终点名称", new LatLng(dlat, dlon), "");
        AmapNaviParams params = new AmapNaviParams(start, null, end, AmapNaviType.DRIVER);
        params.setUseInnerVoice(true);
        params.setMultipleRouteNaviMode(true);
        params.setNeedDestroyDriveManagerInstanceWhenNaviExit(true);
        //发起导航
        AmapNaviPage.getInstance().showRouteActivity(context, params, null);
    }
  • 具体的参数取值可以前往导航组件—文档查看

五、来看下实现的效果:首先他会先规划一下路线然后你就可以发起导航了和使用高德App是一样的

Android集成高德地图导航SDK、实现App内进行导航、打开高德App导航_第3张图片 Android集成高德地图导航SDK、实现App内进行导航、打开高德App导航_第4张图片

六、Android调起高德App进行导航也就不行集成SDK,如下:

public class AMapUtil {

    /**
     * 路线规划
     *
     * @param slat 起点纬度
     * @param slon 起点经度
     * @param dlat 终点纬度
     * @param dlon 终点经度
     */
    public static void route(Context context, String slat, String slon, String dlat, String dlon) {
        if (isInstallApp(context, "com.autonavi.minimap")) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.addCategory(Intent.CATEGORY_DEFAULT);
            intent.setPackage("com.autonavi.minimap");
            String uri = "androidamap://route?" + "sourceApplication=" + context.getString(R.string.app_name);
            //如果设置了起点
            if (!TextUtils.isEmpty(slat) && !TextUtils.isEmpty(slon)) {
                uri += "&slat=" + slat + "&slon=" + slon;
            }
            uri += "&dlat=" + dlat +
                    "&dlon=" + dlon +
                    "&dev=" + 0 +
                    "&t=" + 0 +
                    "&t=" + 0;
            intent.setData(Uri.parse(uri));
            context.startActivity(intent);
        } else {
            String uri = "https://uri.amap.com/navigation?";
            //如果设置了起点
            if (!TextUtils.isEmpty(slat) && !TextUtils.isEmpty(slon)) {
                uri += "from=" + slon + "," + slat + ",起点";
            }
            uri += "&to=" + dlon + "," + dlat + ",终点" +
                    "&mode=car";
            Intent intent = new Intent(Intent.ACTION_VIEW,
                    Uri.parse(uri));
            context.startActivity(intent);
        }
    }

    /**
     * 检测应用是否安装
     */
    public static boolean isInstallApp(Context context, String packageName) {
        PackageInfo packageInfo;
        try {
            packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
        } catch (Exception e) {
            packageInfo = null;
            e.printStackTrace();
        }
        return packageInfo != null;
    }
}

  • 首先检测高德是否安装,如果没有则打开H5高德地图
  • 具体的参数设置查看这里的打开App导航文档
  • 具体的参数设置查看这里的打开H5导航文档

到这里就说完了可以愉快的玩耍了…

你可能感兴趣的:(Android)