百度导航5.0之后的坑

百度地图新旧版本里有很多冲突,特别是定位和导航就会报许多令人摸不着头脑的错误,比如下面这些常见的:

  • mapsdkvi.com.gdi.bgl.android.java.EnvDrawText,
  • Multiple dex files define Lcom/baidu/android/bbalbs/common/util/CommonParam,
  • dlopen failed: library “/data/data/com.example.gpstest1/lib/libgnustl_shared.so” not found,
  • dlopen failed: library /lib/libcrypto.so" not found

虽说百度功能很强大,但不得不吐槽一下真的坑,困扰了很久,最后找到了一片文章写到了这些问题的解决方法,主要是百度地图升级到5.0之后,把以前的包是很多个jar包的,全部合并在一起了,导致新旧版本合并时会出现很多冲突。

https://blog.youkuaiyun.com/qq_34115899/article/details/80541545
这篇文章写得很详细,能解决一切冲突问题,诚意推荐给大家。

在百度地图官网下载了百度导航的demo包之后,基本就是里面的代码直接进行copy,但是这里也需要注意几个问题
1、导航算路失败的问题。
百度提供的导航路线类型有四类
int GCJ02 = 0; 国际经纬度坐标
int BD09_MC = 1; 国测局坐标
int WGS84 = 2; 百度墨卡托坐标
int BD09LL = 3; 百度经纬度坐标
自己在开发中类型必须要选对才行,我个人认为这里设置不同的坐标类型主要还是在于经纬度的算法不同,一般我们获取经纬度信息采用的都是“bd09ll”百度经纬度,默认值gcj02,
因为在基础定位时,我们需要设置定位参数
在这里插入图片描述

在类LocationClientOption中,源码就只有三种类型:“gcj02”、“bd09”、“bd09ll”

public void setCoorType(String var1) {
    var1 = var1.toLowerCase();
    if(var1.equals("gcj02") || var1.equals("bd09") || var1.equals("bd09ll")) {
        this.coorType = var1;
    }
}

所以在初始化方法 public BNRoutePlanNode(double longitude, double latitude, String name, String description, int coType)时,传入的coType应该与获取经纬度值的设置CoorType保持一致。
比如我在之前定位设置的bd09ll,所以在导航计算路线时,设置的参数:

BNRoutePlanNode sNode = new BNRoutePlanNode(116.30142, 40.05087, "百度大厦", "百度大厦", BNRoutePlanNode.CoordinateType.BD09LL);
        BNRoutePlanNode eNode = new BNRoutePlanNode(116.39750, 39.90882, "北京天安门", "北京天安门", BNRoutePlanNode.CoordinateType.BD09LL);

注意这里的coType也可以设置为GCJ02。

2、设置语音必须导入官方Demo的Module包Navitts。
在初始化语音时,如果使用内置TTS,需要传入参数APPID,该参数值可以百度地图控制台拿到
在这里插入图片描述

demo地址:https://github.com/LeeVanie/MapDemo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值