【百度地图学习-一】初始化以及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,看完这些你应该基本上会掌握了,还有一些显示地图中一些很神奇的效果,需要一 ...
随机推荐
- hibernate对象三种状态
在Hibernate中,对象有三种状态:临 时状态(Transient).持久状态(Persistent)和游离状态(Detached). 处于持久态的对象也称为 PO(PersistenceObje ...
- paip.刮刮卡砸金蛋抽奖概率算法跟核心流程.
paip.刮刮卡砸金蛋抽奖概率算法跟核心流程. #---抽奖算法需要满足的需求如下: 1 #---抽奖核心流程 1 #---问题???更好的算法 2 #---实际使用的扩展抽奖算法(带奖品送完判断和每 ...
- [轻微]WEB服务器启用了OPTIONS方法/如何禁止DELETE,PUT,OPTIONS等协议访问应用程序/tomcat下禁用不安全的http方法
使用了360网站安全检测 查到有OPTIONS方法 百度了下 https://my.oschina.net/maliang0130/blog/338725 找到这个方法奈何http.conf 找不到无 ...
- Why Apache Spark is a Crossover Hit for Data Scientists [FWD]
Spark is a compelling multi-purpose platform for use cases that span investigative, as well as opera ...
- 通过修改host文件来允许和禁止主机的访问
通过修改host文件来允许和禁止主机的访问 修改/etc/hosts.deny,加入"sshd:ALL" 修改/etc/hosts.allow,加入"sshd:192.1 ...
- Jquery easyui开启行编辑模式增删改操作
Jquery easyui开启行编辑模式增删改操作 Jquery easyui开启行编辑模式增删改操作先上图 Html代码: <table id="dd"> </ ...
- Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(三)
一.前提: 完成前一篇的内容. 具体参考:Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(二)篇 二.本篇目标: l 说说游戏中各种角色的动作.属性以及重构思路 l 进行代码重构让色狼大叔和 ...
- ASP怎么解除文件上传200kb限制
第一步:修改IIS设置,允许直接编辑配置数据库.打开,Internet信息服务第二步:先在服务里关闭iis admin service服务,找到windows\system32\inetsrv\下的m ...
- 【micropython】用python来进行BadUSB的USB-HID测试(含无线控制)
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 本文以TPYBoardv101开发板为例讲解了利用micropython进行BadUSB的u ...
- Android开发(二十八)——基础功能函数
/** * 判断事件是否在控件中 * * @param view * @param ev * @return * @see http://m.blog.csdn.net/blog/aygxylxk/8 ...