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 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...
随机推荐
- SQL编程语句
视图 视图就是我们查询出来的虚拟表创建视图:create view 视图名 as SQL查询语句,分组,排序,in 等都不能写视图的用法: select * from 视图名 SQL编程 定义变量:d ...
- C#模拟百度登录并到指定网站评论回帖(三)
上次说到怎么获取BAIDUID,这个相信很多人都能够拿到就不多说了,今天一连说两个,获取token和raskey 2.利用以上获得的cookie直接访问页面 https://passport.baid ...
- 微信小程序组件解读和分析:三、swiper滑块视图
swiper滑块组件说明: 滑块视图容器,用于展示图片,可以通过用户拖拽和设置自动切换属性控制图片的切换 组件的使用示例的运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? ...
- Android - 收藏集
Android - 收藏集 https://www.jianshu.com/p/dad51f6c9c4d?utm_campaign=maleskine&utm_content=note& ...
- Layui数据表单的编辑
使用layui对单元格进行编辑并保存 先是要引入layui的JS和CSS 然后创建一个表格 而重要的是edit这个属性,只有使用了这个属性的一列数据表格才可以编辑,其余的都不可以进行编辑 然后使用la ...
- 用Java实现在【520,1314】之间生成随机整数的故事
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 在未来城市工作的的程序员小木,做了一个梦,梦到自己在塔鲁姆的街道上看到一个姑娘,这个姑娘从远处走向他,脸上带着微笑.让小木 ...
- [HNOI2006]最短母串 (AC自动机+状压)
Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,Sn)都是T的子串. Input 第一行是一个正整数n(n<=12) ...
- Flask框架 之abort、自定义错误、视图函数返回值与jsonify
一.abort函数 使用abort函数可以立即终止视图函数的执行,并可以返回给前端特定的值. abort函数的作用: 1.传递状态码,必须是标准的http状态码 2.传递响应体信息 @app.rout ...
- 【转载】原 IntelliJ IDEA (idea)引入eclipse web项目
原文地址:http://my.oschina.net/u/1170781/blog/192731 摘要 概述IntelliJ IDEA,以后都简称为idea,鼓捣了很久,看了很多例子才搞出来,希望对其 ...
- 洛谷——P1972 [SDOI2009]HH的项链(线段树)
P1972 [SDOI2009]HH的项链 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的 ...