一、百度地图的初始化

  主要用到三个类:

  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的更多相关文章

  1. 百度地图学习(II)-Android端的定位

    哎,经历了小编的最近时间的研究,我的百度定位终于成功啦,刹那间觉得自己萌萌哒啦(- ̄▽ ̄)- 话不多说,直接进入正题: 首先,我们来看一下效果: [分析定位原理] [编码分析] 1)处理程序的清单文件 ...

  2. 百度地图学习(Ⅰ)-Android端地图的显示及简单应用

    ps:(1.地图应用一定要在真机测试: 2.Design By:Android Stdio: 3.百度地图官方参考链接(http://developer.baidu.com/map/index.php ...

  3. Android百度地图SDK 导航初始化和地图初始化引起的冲突

    如题,相同是百度地图SDK开发过程中遇到的一个问题.交代下背景: 开发了一款内嵌百度地图的应用,因此里面差点儿相同将眼下百度地图SDK开放的主要功能都用到了,定位,地图显示,覆盖物标示.POI搜索,行 ...

  4. 我的Android进阶之旅------>百度地图学习:BDLocation.getLocType ( )值分析

    BDLocation类,封装了定位SDK的定位结果,在BDLocationListener的onReceive方法中获取.通过该类用户可以获取error code,位置的坐标,精度半径等信息.具体方法 ...

  5. 百度地图API简单初始化

    <script src="http://api.map.baidu.com/api?key=&v=2.0&ak=youkey"></script& ...

  6. 数据视化Echarts+百度地图API实现市县区级下钻

    开始 这两天公司有个页面需要做数据可视化的展示,数据视化采用的是Echarts+百度地图API做展示,需要用到县级区级下钻的一个联动效果发现网上关于Echarts做到县区级下钻的资料很少,有的话也不是 ...

  7. Android学习笔记之使用百度地图实现地图控制

    PS:吾之荣耀,离别已久. 学习内容: 1.实现地图控制. 2.百度地图开发的一些细节     1.实现地图控制:   这一篇主要写在百度地图上添加一些其他控制.上一篇书写了覆盖物的添加,地理编码和反 ...

  8. 百度地图开发的学习(一)——配置环境&基础地图

    由于项目需求缘故,最近在学习Android地图的开发,所以就记录一下学习过程.最近都会陆续更新啦.目前使用百度地图API的挺多的,所以就先以它为基础学习一些地图的调用. 一.AK的申请 与web开发不 ...

  9. 百度地图API的学习

    我们可以进入百度API的网站学习百度地图API:http://dev.baidu.com/wiki/map/index.php,看完这些你应该基本上会掌握了,还有一些显示地图中一些很神奇的效果,需要一 ...

随机推荐

  1. Lingo 做线性规划 - Revenue Management

    Reference: <An Introduction to Management Science Quantitative Approaches to Decision Making, Rev ...

  2. Ubuntu 安装配置MySQL,并使用VS的Server Explorer UI界面远程管理MySQL

    为安装配置方便,使用root账号登入Ubuntu. step1: 键入下面命令安装MySQL. 过程十分简单.安装过程中只需根据提示输入root账号的密码即可. step2:安装完成后检查MySQL是 ...

  3. nginx upstream模块--负载均衡

    Module ngx_http_upstream_module英文文档 upstream模块相关说明1.upstream模块应放于nginx.conf配置的http{}标签内2.upstream模块默 ...

  4. spring定时任务轮询(spring Task)

    定时任务轮询比如任务自服务器启动就开始运行,并且每隔5秒执行一次. 以下用spring注解配置定时任务.1.添加相应的schema xmlns:task=" xsi:schemaLocati ...

  5. struts2学习笔记之二:基本环境搭建

    学习struts2有一段时间了,作为一个运维人员学习的时间还是挺紧张的,写这篇文件为了方便以后复习时使用 环境: MyEclipse 10 tomcat6 jdk1.6   首先建立一个web项目,并 ...

  6. hashcode详解

    序言 写这篇文章是因为在看hashMap源码时遇到有什么hashcode值,然后就去查,脑袋里面是有映像的,不就是在Object中有equals和hashcode方法嘛,这在学java基础的时候就遇到 ...

  7. Win7下SQLite的简单使用

    前言 SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.SQLite 是在世界上最广泛部署的 SQL 数据库引擎.SQLite 源代码不受版权限制. 简 ...

  8. 配置editplus,讓其支持代碼自動格式化功能.

    使用editplus已經好多年了,累積了不少的東西,想換IDE比較麻煩,所以就研究了一下用editplus搭配gofmt.exe配置go語言代碼自動格式化的功能.還好功夫不負有心人,終於被我搞懂了,不 ...

  9. mysql中You can’t specify target table for update in FROM clause错误解决方法

    mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...

  10. SNMP远程监控进程信息的OID

    最近有个项目需要用snmp远程监控进程信息.于是我查了一下资料. 一.资料 .1.3.6.1.2.1.25.4.2.1.1.iso.org.dod.internet.mgmt.mib-2.host.h ...