【百度地图学习-一】初始化以及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,看完这些你应该基本上会掌握了,还有一些显示地图中一些很神奇的效果,需要一 ...
随机推荐
- js中的hasOwnProperty()和isPrototypeOf()
js中的hasOwnProperty()和isPrototypeOf() 这两个属性都是Object.prototype所提供:Object.prototype.hasOwnProperty()和Ob ...
- Beta分布和Dirichlet分布
在<Gamma函数是如何被发现的?>里证明了\begin{align*} B(m, n) = \int_0^1 x^{m-1} (1-x)^{n-1} \text{d} x = \frac ...
- 【原】对频率论(Frequentist)方法和贝叶斯方法(Bayesian Methods)的一个总结
注: 本文是对<IPython Interactive Computing and Visualization Cookbook>一书中第七章[Introduction to statis ...
- C语言实现二叉树-利用二叉树统计单词数目
昨天刚参加了腾讯2015年在线模拟考: 四道大题的第一题就是单词统计程序的设计思想: 为了记住这一天,我打算今天通过代码实现一下: 我将用到的核心数据结构是二叉树: (要是想了解简单二叉树的实现,可以 ...
- atitit.ajax bp dwr 3.的注解方式配置使用流程总结.....
atitit.ajax bp dwr 3.的注解方式配置使用流程总结..... 1. 下载 dwr.jar 1M 1 2. 配置注解方式..web.xml 1 3. Class 配置 2 4. 测试 ...
- iOS开发-NSURLSession详解
Core Foundation中NSURLConnection在2003年伴随着Safari浏览器的发行,诞生的时间比较久远,iOS升级比较快,AFNetWorking在3.0版本删除了所有基于NSU ...
- springmvc中@PathVariable和@RequestParam的区别
顾名思义, @PathVariable和@RequestParam,分别是从路径里面去获取变量,也就是把路径当做变量,后者是从请求里面获取参数. 我的url; http://localhost:808 ...
- Delphi的VCL组件库
Visual Component Library的缩写(可视组件库)VCL是Visual Component Library的缩写,即可视组件库,它是Delphi,C++Builder等编程语言的基本 ...
- node.js WebService异常处理(domain)以及利用domain实现request生命周期的全局变量
成熟的Web Service技术,例如Fast CGI.J2EE.php,必然会对代码异常有足够的保护,好的Web必然会在出错后给出友好的提示,而不是莫名其妙的等待504超时.而node.js这里比较 ...
- 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(三)
----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<In-Memory OLTP – Comm ...