Android百度地图SDK 导航初始化和地图初始化引起的冲突
如题,相同是百度地图SDK开发过程中遇到的一个问题。交代下背景:
开发了一款内嵌百度地图的应用,因此里面差点儿相同将眼下百度地图SDK开放的主要功能都用到了,定位,地图显示,覆盖物标示。POI搜索,行程路线规划,GPS导航。。等等都有。
开发最開始用到的SDK版本号由于是整合版本号,因此各个功能部分的SDK都不确保是最新的。也就没有遇到诸如论坛上的好多仁兄遇到的将分别下载的几个单独的SDK包集成到一个应用中引发的冲突的问题。毕竟之前用的整合包导航SDK还是1.1的定位SDK还是5.3的地图SDK则用的是3.5的,可能也算新的,可是相比眼下的导航2.0地图6.0.5来说还是旧的。
言归正传,由于我将大部分初始化类的工作都放到了一个单独的service中,因此实际的Activity可能仅仅是做了一部分UI的处理工作。当然也包含了地图图层的初始化工作,可是基本能够看做是Service中所做的导航初始化和地图图层的初始化都是同步进行的,当时导航SDK1.1的时候并未发现其它异常,可是到了更新到导航2.0的时候问题就来了。导航初始化例如以下:
// 初始化导航引擎
private void initNaviEngine(Activity activity) {
// 显示载入对话框
DialogUtil.getInstance().showProgressDialog(mActivity);
BaiduNaviManager.getInstance().setNativeLibraryPath(getSdcardDir() + "/BaiduNaviSDK_SO");
BaiduNaviManager.getInstance().init(mActivity, getSdcardDir(),
DDApp.getInstance().getApplicationInfo().packageName, new NaviInitListener() {
String authinfo = null; @Override
public void onAuthResult(int status, String msg) {
if (0 == status) {
authinfo = "key校验成功!";
} else {
authinfo = "key校验失败, " + msg;
}
mActivity.runOnUiThread(new Runnable() { @Override
public void run() {
// Toast.makeText(mActivity, authinfo,
// Toast.LENGTH_LONG).show();
Log.d(TAG, authinfo);
}
});
} public void initSuccess() {
// Toast.makeText(mActivity, "百度导航引擎初始化成功",
// Toast.LENGTH_SHORT).show();
Log.d(TAG, "百度导航引擎初始化成功");
} public void initStart() {
// Toast.makeText(mActivity, "百度导航引擎初始化開始",
// Toast.LENGTH_SHORT).show();
Log.d(TAG, "百度导航引擎初始化開始");
} public void initFailed() {
// Toast.makeText(mActivity, "百度导航引擎初始化失败",
// Toast.LENGTH_SHORT).show();
Log.d(TAG, "百度导航引擎初始化失败");
}
}, null /* mTTSCallback */);
// BNRouteGuideManager.getInstance().setVoiceModeInNavi(BNRouteGuideManager.VoiceMode.Novice);
// 显示载入对话框
DialogUtil.getInstance().dismissProgressDialog();
}
地图的初始化则例如以下:
// 初始化地图
protected void initMapView() {
if (mMapView != null)
deinitMapView();
mCurrentMode = LocationMode.FOLLOWING;
mMapView = new MapView(getActivity());
mBaiduMap = mMapView.getMap();
mBaiduMap.setMyLocationEnabled(true);
mBaiduMap.setOnMapLoadedCallback(new OnMapLoadedCallback() { @Override
public void onMapLoaded() {
// TODO Auto-generated method stub
bIsFinish = true;
}
}); fl_map.addView(mMapView);
fl_map.setVisibility(View.VISIBLE);
// 隐藏百度logo
View child = mMapView.getChildAt(1);
if (child != null && child instanceof ImageView) {
child.setVisibility(View.INVISIBLE);
}
hideZoomView(mMapView);
}
看似两者并不冲突,可是实际中却发现了非常诡异的问题。就是看起来地图图层在刷新时出现了问题,仅仅显示了一片白色,仅仅所以强调是白色是由于假设是灰色网格的话非常可能就是key验证未通过或者无网络了。所以当时以为是地图图层刷新出现了问题。直到最后可能意识到是导航初始化的时间点选的有误引起的问题,才找到了问题点。就是由于导航引擎初始化和地图图层的载入发生了冲突才导致了地图图层载入失败。于是后来的问题也就好攻克了,我的做法是在发起导航之前再做引擎的初始化,并且这个初始化仅仅须要做一次,时间也不会非常长所以全然能够忽略这样的延迟。
因此当出现地图图层载入异常无法正常显示无法拖动的时候,能够考虑下我所遇到的情况。
最后再说下我的SDK环境。导航SDK 2.0 地图SDK 3.5.0 定位SDK 6.0.5 。供各位參考
Android百度地图SDK 导航初始化和地图初始化引起的冲突的更多相关文章
- Android 百度定位SDK
原文:Android 百度定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/shui1025701856/article/details/7 ...
- 地图 SDK 系列教程-在地图上展示指定区域(转载)
腾讯位置服务地图SDK是一套提供多种地理位置服务的应用程序接口.通过调用该接口,开发者可以在自己的应用中加入地图相关的功能(如地图展示.标注.绘制图形等),轻松访问腾讯地图服务和数据,构建功能丰富.交 ...
- Android 百度鹰眼轨迹SDK(v2.1.6)
闲聊 看过<鹰眼追击>这部电影的读者一定对"鹰眼"这台巨无霸计算机印象深刻,如今我们能够实现自己的鹰眼. 效果图 本篇为百度地图SDK第三篇博文 第一篇实现:Andro ...
- Android studio 百度地图开发(3)地图导航
Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...
- 【月入41万】Mono For Android中使用百度地图SDK
借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...
- Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37758097 一直觉得地图应用支持离线地图很重要啊,我等移动2G屌丝,流量不易, ...
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...
- Android 百度地图 SDK v3.0.0 (一)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37729091 最近公司要把百度地图集成的项目中,于是我就研究了一天百度地图的SD ...
- Android 百度地图 SDK v3.0.0 (三) 加入覆盖Marker与InfoWindow使用
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...
随机推荐
- Angular JS中自定义标签 属性绑定的解释
看到自定义标签的文档时,文档作者解释的能力实在太弱,也可能是本人太笨,一下绕不过来. 看了一个stackoverflow答案,才算明白,在此贴出翻译,以供大家参考. .csharpcode, .csh ...
- 微信小程序打卡第五天
2018-02-1823:55:53大年初三 微信小程序已经学了5个夜晚了,没有很努力,只是简单地接触,感觉从今天开始有了突破的进展,很爽! 无意间发现一个很好的教程,也是一个老哥分享的,很给力 ht ...
- 联想 Vibe Shot(Z90-7) 免recovery 获取ROOT权限 救砖 VIBEUI V3.1_1625
>>>重点介绍<<< 第一:本刷机包可卡刷可线刷,刷机包比较大的原因是采用同时兼容卡刷和线刷的格式,所以比较大第二:[卡刷方法]卡刷不要解压刷机包,直接传入手机后用 ...
- treetable adding nodes at root level
describe("loadBranch()", function() { beforeEach(function() { this.newRows = " ...
- day21-2 类的派生
目录 类的派生 派生方法一 派生方法二 类的派生 派生:子类中新定义属性的这个过程叫做派生 派生方法一 指明道姓访问某一个类的函数:该方法与继承无关 class People: def __init_ ...
- Spring Security 介绍与Demo
一.Spring Security 介绍 Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块的默认技术选型.我们仅需引入spring-boot-s ...
- 2019西安多校联训 Day4
T1 大水题!!难度简单,显然的贪心策略即可,but... 思路:首先我们按与i点作战后活下来的士兵排序,然后 若当前剩余兵力足够直接减掉战斗死亡人数,如果不够就加 够再打它,但是!我们在考完试观察测 ...
- C++ CEF 浏览器中显示 Tooltip(标签中的 title 属性)
在 Windows 中将 CEF 集成到 C++ 客户端以后,默认是无法显示 tooltip 的,比如图片标签中的 title 属性. 实现的方式其实很简单,按下面的步骤操作就可以: 创建一个文本文件 ...
- centos 7桌面和命令行转行
CentOS7图形界面与命令行界面(终端)切换(1)CentOS7 在图形界面进入dos界面 :ctrl+alt+F6 dos界面进入图形界面:ctrl+alt+F2 本机用的这个命令: (2)Cen ...
- 53.doc value机制内核级原理深入探秘
主要知识点: doc value的原理 doc value性能优化 一.doc value原理 1. 生成时间:index-time生成 PUT/POST的时候,就会生成doc ...