【百度地图学习-一】初始化以及TextOverlay
一、百度地图的初始化
主要用到三个类:
1、BMapManager:使用地图sdk前需先初始化BMapManager.BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创建, 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁。它属于地图引擎管理类。
最好在用一个自定义的继承于Application的类来依附Activity的生命周期,它有四个常用方法:
public boolean start() //开启百度地图API
public boolean stop() //终止百度地图API,调用此函数后,不会再发生回调
public void destroy() //在程序退出前调用
public boolean init(java.lang.String strKey,MKGeneralListener listener)//其中的参数:
strKey
- 申请的授权验证码,
listener
- 注册回调事件
package org.hjw.hellobaidu; import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.map.MKEvent; import android.app.Application;
import android.content.Context;
import android.widget.Toast; public class MapApplication extends Application {
/**
* 使用地图sdk前需先初始化BMapManager.
* BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创建,
* 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁
*/
private static MapApplication mInstance = null;
public boolean m_keyRight = true;
BMapManager bMapManager = null;//地图管理引擎 public static final String mapKey = "sEtVxB4uwzTRlchScMcELXu8"; @Override
public void onCreate() {
super.onCreate();
mInstance = this;
initMapManager(this);
} private void initMapManager(Context context) {
if(bMapManager==null){
bMapManager = new BMapManager(context);
}
if(!bMapManager.init(mapKey, new GeneralListner())){
Toast.makeText(MapApplication.getInstance().getApplicationContext(),
"BMapManager 初始化错误!", Toast.LENGTH_LONG).show();
}
} public static MapApplication getInstance(){
return mInstance;
}
static class GeneralListner implements MKGeneralListener{ @Override
public void onGetNetworkState(int arg0) {
if(arg0 ==MKEvent.ERROR_NETWORK_CONNECT){
Toast.makeText(MapApplication.getInstance().getApplicationContext(),
"网络出错啦!", Toast.LENGTH_LONG).show();
}else if(arg0 ==MKEvent.ERROR_NETWORK_DATA){
Toast.makeText(MapApplication.getInstance().getApplicationContext(),
"请输入正确的检索条件!", Toast.LENGTH_LONG).show();
} } @Override
public void onGetPermissionState(int iError) {
if(iError!=0){
Toast.makeText(MapApplication.getInstance().getApplicationContext(),
"请输入正确Mapkey!", Toast.LENGTH_LONG).show();
MapApplication.getInstance().m_keyRight=false;
}else{
Toast.makeText(MapApplication.getInstance().getApplicationContext(),
"MapKey认证成功!", Toast.LENGTH_LONG).show();
MapApplication.getInstance().m_keyRight=true;
}
} } }
2、MapView类:它直接继承于ViewGroup,显示地图的View,一个显示地图的视图,当被焦点选中时,它能捕获按键事件和触摸手势去平移和缩放地图。
MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()。必须在setContentview后才可以使用mapView,同时也包含了对覆盖物的管理等。 3、MapController类:它是地图控制器,通过mapView对象获得,同时也取得了对mapView的各种操作权限,包括缩放大小,显示不同类型的图等等。 4、MKMapViewListener接口:地图显示事件监听器。 该接口监听地图显示事件,用户需要实现该接口以处理相应事件,包含下面四个方法。
{
void onClickMapPoi(MapPoi mapPoiInfo)
点击到地图可点标注时会回调此接口
void onGetCurrentMap(Bitmap b)
截图成功后会回调此接口
void onMapAnimationFinish()
动画结束时会回调此消息
void onMapLoadFinish()
在图加载完成回调
}
void onMapMoveFinish()
地图移动完成时会回调此接口
重写方法时,必须通过mapView对象注册监听器。
mapView.regMapViewListener(MapApplication.getInstance().bMapManager,mkMapViewListener);// 用户注册地图监听器
二、文字覆盖物的实现
分为以下几步:
1. 用TextItem准备文字数据
2. 创建TextOverlay,调用 addText(TextItem) 接口添加文字.
3. 调用MapView.getOverlays().add()方法添加overlay到mapview中。
4. 调用MapView.refresh() 使Overlay生效。
实现代码:
TextItem textItem = new TextItem();
textItem.fontColor = textColor1;
//textItem.bgColor = textColor1;
textItem.fontSize = 20;
textItem.text = "这里是中心广场";
textItem.pt = mapView.getMapCenter();
TextOverlay textOverlay = new TextOverlay(mapView);
textOverlay.addText(textItem);
mapView.getOverlays().add(textOverlay);
mapView.refresh();
其中对于TextItem类中的fontColor和fontSize是必须赋值的,否则地图上面会看不到的。
下面是效果图:
那个很小的”这里是中心广场”就是覆盖物,因此需适量调整字体大小。其中TextItem中的fontSize和fontColor是必须要设置的,这是在百度sdk2.0之后才需要这样,2.0之前都是直接继承基类Overlay重写Draw方法。
还有一点就是官方提供的Demo里面,GeoPoint的初始化,参数分别为纬度和经度,Demo里面弄反了,所以可能会导致地图显示空白,只有小格子。这个问题纠结了好久。
【百度地图学习-一】初始化以及TextOverlay的更多相关文章
- 百度地图学习(II)-Android端的定位
哎,经历了小编的最近时间的研究,我的百度定位终于成功啦,刹那间觉得自己萌萌哒啦(- ̄▽ ̄)- 话不多说,直接进入正题: 首先,我们来看一下效果: [分析定位原理] [编码分析] 1)处理程序的清单文件 ...
- 百度地图学习(Ⅰ)-Android端地图的显示及简单应用
ps:(1.地图应用一定要在真机测试: 2.Design By:Android Stdio: 3.百度地图官方参考链接(http://developer.baidu.com/map/index.php ...
- Android百度地图SDK 导航初始化和地图初始化引起的冲突
如题,相同是百度地图SDK开发过程中遇到的一个问题.交代下背景: 开发了一款内嵌百度地图的应用,因此里面差点儿相同将眼下百度地图SDK开放的主要功能都用到了,定位,地图显示,覆盖物标示.POI搜索,行 ...
- 我的Android进阶之旅------>百度地图学习:BDLocation.getLocType ( )值分析
BDLocation类,封装了定位SDK的定位结果,在BDLocationListener的onReceive方法中获取.通过该类用户可以获取error code,位置的坐标,精度半径等信息.具体方法 ...
- 百度地图API简单初始化
<script src="http://api.map.baidu.com/api?key=&v=2.0&ak=youkey"></script& ...
- 数据视化Echarts+百度地图API实现市县区级下钻
开始 这两天公司有个页面需要做数据可视化的展示,数据视化采用的是Echarts+百度地图API做展示,需要用到县级区级下钻的一个联动效果发现网上关于Echarts做到县区级下钻的资料很少,有的话也不是 ...
- Android学习笔记之使用百度地图实现地图控制
PS:吾之荣耀,离别已久. 学习内容: 1.实现地图控制. 2.百度地图开发的一些细节 1.实现地图控制: 这一篇主要写在百度地图上添加一些其他控制.上一篇书写了覆盖物的添加,地理编码和反 ...
- 百度地图开发的学习(一)——配置环境&基础地图
由于项目需求缘故,最近在学习Android地图的开发,所以就记录一下学习过程.最近都会陆续更新啦.目前使用百度地图API的挺多的,所以就先以它为基础学习一些地图的调用. 一.AK的申请 与web开发不 ...
- 百度地图API的学习
我们可以进入百度API的网站学习百度地图API:http://dev.baidu.com/wiki/map/index.php,看完这些你应该基本上会掌握了,还有一些显示地图中一些很神奇的效果,需要一 ...
随机推荐
- java5 CountDownLatch同步工具
好像倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当到达0时,所有等待者就开始执行. java.util.concurrent.CountDownLatch ...
- iis6.0报以下的错。。
Could not load file or assembly 'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec8 ...
- 改写libsvmread读取多标记数据集
在libsvm和liblinear软件包里有一个C函数叫libsvmread,这个函数的作用是把如下格式的文本文件\begin{align*} 1 & \ \ *:* \ \ *:* \\ - ...
- paip.gui控件form窗体的原理实现以及easyui的新建以及编辑实现
paip.gui控件form窗体的原理实现以及easyui的新建以及编辑实现 //////新建 与编辑 var EditForm=new Form_easyui(); if(row) ...
- paip.陕北方言 广东方言的不同单字 1千高频字
paip.陕北方言 广东方言的不同单字 1千高频字 SELECT * FROM `canx` c where c.cn in ( select zi from hezi1k h) and st ...
- SHINY-SERVER R(sparkR)语言web解决方案 架设shiny服务器
1. shiny server简介 shiny-server是一种可用把R 语言以web形式展示的服务,其实RStudio公司自己构建了R Shiny Application运行的平台(http:// ...
- 适合于小团队产品迭代的APP测试流程
一.测试周期 测试周期一般为2~3天,根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先向主管或产品经理确认项目排期. 二.测试资源 测试任务开始前,检查各项测试资源. 产品功能需求文档. ...
- 微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性
开篇介绍 通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整个流程执行下来的时间可能比较长.假设在 ETL Package 中包含5个Task, ...
- Asp.Net实现FORM认证的一些使用技巧(转)
最近因为项目代码重构需要重新整理用户登录和权限控制的部分,现有的代码大体是参照了.NET的FORM认证,并结合了PORTAL KITS的登录控制,代码比较啰嗦,可维护性比较差.于是有了以下的几个需求( ...
- 20个最漂亮的基于WordPress的企业网站
20个最漂亮的基于WordPress的企业网站 每个人都知道很好很强大的WordPress是开源的,并且有一个很强的的团队和更强大的支持社区.它被世界上的广大设计师.程序员和商业人员广泛使用.它已经成 ...