Android开发丶调用百度地图进行导航

开发过程中,遇到这样一个需求,指定起始和终点站,然后从app内部调起百度地图进行导航,网上相关的方法很多,但是很多都不太好使,官方的文档记录也不是很详细,经过一番折腾踩了一些坑,总算是将其实现了,特此做下记录!

步骤如下:

1.首先是新建一个AndroidStudio项目,然后去百度地图开放者平台注册项目,获取到ak值。

2.在百度地图开放者平台下载sdk,注意,常用的唤醒百度地图来进行导航只需要下载以下即可,不用下载其它的诸如定位SDK之类。

3.下载sdk,解压,会看到如下目录。

4.我们把它们全部拷贝到project下的libs文件夹中。

5.在app的build.gradle中添加如下代码。

sourceSets {
    main{
        jniLibs.srcDirs= ['libs']
    }
}

6.点击加载按钮。

7.此时会发现jar包已经依赖,并生成一个jniLibs文件夹。

8.项目新建一个Application文件,并在清单文件中声明。

/**
 * @author created by fantasychong
 * @date 2020-01-08
 */
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SDKInitializer.initialize(this); //加载百度地图so文件
    }
}
<application
    android:name=".MyApplication"
    xxxxxxxxxxx>

9.在清单文件中配置权限。

<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 获取访问手机振动器权限,用于导航过程中的震动提示 -->
<uses-permission android:name="android.permission.VIBRATE"/>

10.在清单文件中设置百度地图AK码。

<!--百度地图ak码-->
<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="a6FHN6Kq8OzKI7aQC3aMUDaMoG7oc7kr" />

10.打开app目录下的proguard-rules.pro文件,添加如下混淆代码。

-keep class com.baidu.** {*;}
-keep class mapsdkvi.com.** {*;}    
-dontwarn com.baidu.**

11.此时环境已经搭建完毕,我们回到MainActivity,配置视图xml文件,此处直观起见,放一个按钮就行了。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/main_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="调用导航"/>
</LinearLayout>

12.指定一下起始终点站的经纬度(这里可以根据项目实际需求)。

//起始点经纬度 116.35885,39.914714
double startLon= 116.35885;
double startLat= 39.914714;

//终点经纬度 117.162582,36.690705
double endLon= 117.162582;
double endLat= 36.690705;

13.设置button的点击监听,如果尚未安装百度地图app则提示下载即可。

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        NaviParaOption para = new NaviParaOption();
        para.startPoint(new LatLng(startLat, startLon));
        para.startName("从这里开始");
        para.endPoint(new LatLng(endLat, endLon));
        para.endName("到这里结束");
        try {
            BaiduMapNavigation.openBaiduMapNavi(para, MainActivity.this);
        } catch (BaiduMapAppNotSupportNaviException e) {
            e.printStackTrace();
            Toast.makeText(MainActivity.this, "您尚未安装百度地图app", Toast.LENGTH_SHORT).show();
        }
    }
});

14.跑起来!

此处的机制是当手机尚未安装百度地图时,会自动跳转到网页版导航,不过个人觉得网页版不太方便,因此我们这里设置关掉网页支持,只toast提示即可!

回到button的点击监听,添加如下代码。

BaiduMapNavigation.setSupportWebNavi(false);

安装,运行!

15.当设备安装了百度地图时,点击开始导航

 

至此全部完成,demo附上!

资源下载

 

 

 

 

  • 1
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值