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 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...
随机推荐
- python语言真正的奥义所在--对接32单片机
2018-02-2720:51:24 今天晚上注定我要玩一夜这个东西,太爽了,给力! 烧写固件成功, http://blog.csdn.net/Lingdongtianxia/article/deta ...
- 开发一款APP需要多少钱
移动互联网近几年发展尤为迅速,越来越多的企业也开始将目光聚集到了移动互联网,这意味着移动互联网时代到来,而移动APP应用是竞争的一个因素.在移动互联网时代,移动APP开发已经不再是什么新鲜事了,许多的 ...
- Jmeter接口测试---webservices
Jmeter与LR相比来说,测试webservices接口要简单很多. 下面说下具体的操作流程: 1.创建一个线程组 2.创建一个soap/xml请求 3.填写要进行测试webservice的请求内容 ...
- linux 怎么用 名字 代替 ip ?
比如 ssh 1.1.1.1 变成 ssh usr1 在每台机子的/etc/hosts文件中添加ip与名字的对应表
- Socket编程的简单实现
关于socket编程的简单实现,主要分成客户端.服务端两个部分.实现如下: 1.服务端代码如下,注意:server端要优先于client端启动 2.client端代码,以及启动后客户端和服务端之间的简 ...
- 使用WAS寄宿net.tcp WCF服務
首先添加Windows Features 確保打開以下服務 Net.Tcp Listener Adapter Net.Tcp Port Sharing Service Windows Process ...
- MFC_2.9 使用变参函数
使用变参函数 #include <stdio.h>// 包含一个头文件,提供不定参数的宏#include <stdarg.h>// 用于输出不定数量的整数值void pri ...
- Mybatis学习总结一
一.Mybatis架构 JAR包下载地址 1. mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper. ...
- P1616 疯狂的采药(洛谷,动态规划递推,完全背包)
先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ...
- [Luogu] P4254 [JSOI2008]Blue Mary开公司
题目背景 Blue Mary 最近在筹备开一家自己的网络公司.由于他缺乏经济头脑,所以先后聘请了若干个金融顾问为他设计经营方案. 题目描述 万事开头难,经营公司更是如此.开始的收益往往是很低的,不过随 ...