如题,相同是百度地图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 导航初始化和地图初始化引起的冲突的更多相关文章

  1. Android 百度定位SDK

    原文:Android 百度定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/shui1025701856/article/details/7 ...

  2. 地图 SDK 系列教程-在地图上展示指定区域(转载)

    腾讯位置服务地图SDK是一套提供多种地理位置服务的应用程序接口.通过调用该接口,开发者可以在自己的应用中加入地图相关的功能(如地图展示.标注.绘制图形等),轻松访问腾讯地图服务和数据,构建功能丰富.交 ...

  3. Android 百度鹰眼轨迹SDK(v2.1.6)

    闲聊 看过<鹰眼追击>这部电影的读者一定对"鹰眼"这台巨无霸计算机印象深刻,如今我们能够实现自己的鹰眼. 效果图 本篇为百度地图SDK第三篇博文 第一篇实现:Andro ...

  4. Android studio 百度地图开发(3)地图导航

    Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...

  5. 【月入41万】Mono For Android中使用百度地图SDK

    借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...

  6. Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37758097 一直觉得地图应用支持离线地图很重要啊,我等移动2G屌丝,流量不易, ...

  7. Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...

  8. Android 百度地图 SDK v3.0.0 (一)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37729091 最近公司要把百度地图集成的项目中,于是我就研究了一天百度地图的SD ...

  9. Android 百度地图 SDK v3.0.0 (三) 加入覆盖Marker与InfoWindow使用

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...

随机推荐

  1. Myeclipse2014安装&破解激活

    市场上很多JavaWeb的IDE比如Idea(听说用好开发效率会很高),eclipse(插件丰富还免费),但是对于初学者还是为了提高学习的效率(Myeclipse创建web项目的时候可以自动生成一些配 ...

  2. 关于css宽高问题

    问题:span标签的width和height分别为多少? <!DOCTYPE html> <html> <head> <meta charset=" ...

  3. [算法天天练] - C语言实现约瑟夫环(2)

    Linux下 #include <stdlib.h>#include <stdio.h> int main(){ int n,m,i,s = 0; printf("E ...

  4. 读《实战GUI自动化测试》之:第三步,如何提高测试结果分析的效率

    转自:http://www.ibm.com/developerworks/cn/rational/r-cn-guiautotesting3/ 所谓自动化测试,就是“自动化”+“测试”.自动化本身显然不 ...

  5. Microsoft SQL Server学习(五)--操作符聚合函数

    算术运算符 逻辑运算符 比较运算符 聚合函数 算术运算符(+ - * / ) select score*2 as 成绩翻倍 from class_A update class_A set score= ...

  6. [Windows Server 2012] 更换PHP版本方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:更换PHP ...

  7. golang 自定义time.Time json输出格式

    工作中使用golang时,遇到了一个问题.声明的struct含time.Time类型.使用json格式化struct时,time.Time被格式化成”2006-01-02T15:04:05.99999 ...

  8. 【windows】自动化测试持续集成(CI)环境部署

    1. 环境准备 1.1 我的环境 1.Win10 64位 2.JDK 1.8.0_121 3.Tomcat 7.0.92 4. Jenkins 2.24 5.SVN-Server 3.8.1 1.2 ...

  9. arx刷新图形界面

    actrTransactionManager->flushGraphics(); acedUpdateDisplay();

  10. Vue指令7:v-model

    可以用 v-model 指令在表单控件元素上创建双向数据绑定. v-model 会忽略所有表单元素的 value.checked.selected 特性的初始值. 因为它会选择 Vue 实例数据来作为 ...