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

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

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

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

在这里插入图片描述

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

在这里插入图片描述

  • 配置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" />
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<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" />
    
<!--导航组件Activity-->
<activity
    android:name="com.amap.api.navi.AmapRouteActivity"
    android:configChanges="orientation|keyboardHidden|screenSize
    android:theme="@android:style/Theme.NoTitleBar" />

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

导航组件—文档地址

发起导航:给定起点、途经点、终点
  • 如果不传入起点,那么将会使用当前位置
  • 途径点可以不传
	/**
     * 路线规划
     *
     * @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调起高德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;
    }
}

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

好的,Android集成高德地图SDK的步骤如下: 1. 首先在高德开发者中心注册并创建应用,获取应用的App Key。 2. 在项目的build.gradle文件中添加高德地图SDK的依赖: ``` implementation 'com.amap.api:3dmap:5.5.0' implementation 'com.amap.api:location:5.5.0' ``` 3. 在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> ``` 4. 在AndroidManifest.xml文件中添加以下配置: ``` <meta-data android:name="com.amap.api.v2.apikey" android:value="你的App Key"/> <meta-data android:name="com.amap.api.v2.associated_package_name" android:value="你的应用包名"/> ``` 5. 在布局文件中添加MapView: ``` <com.amap.api.maps.MapView android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 6. 在Activity或Fragment中进行地图初始化和显示: ``` private MapView mMapView; private AMap mAMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); mMapView = findViewById(R.id.mapView); mMapView.onCreate(savedInstanceState); mAMap = mMapView.getMap(); } @Override protected void onResume() { super.onResume(); mMapView.onResume(); } @Override protected void onPause() { super.onPause(); mMapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mMapView.onDestroy(); } ``` 以上就是Android集成高德地图SDK的基本步骤。需要注意的是,如果需要使用定位功能,还需要进行相应的配置和调用。详细的内容可以查看高德官方文档。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code-Porter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值