【百度地图学习-一】初始化以及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,看完这些你应该基本上会掌握了,还有一些显示地图中一些很神奇的效果,需要一 ...
随机推荐
- java web图片显示到浏览器
今天研究了一下午,图片显示问题. jsp中获取绝对路径的方法:String contextPath = request.getContextPath();String path = request.g ...
- NSIS总结1——以管理权限运行
在Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 到第一个Section之间插入一行代码 RequestExecutionLevel admin ...
- python中os和sys模块的详解
平时在工作中经常会用到os模块和sys模块的一些特性,下面是这些特性的一些相关解释,希望对大家有所帮助 os模块 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os. ...
- curl上传、下载、https登陆
1.下载 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "ftp://127.0.0.1/downtest.txt"); cur ...
- asynchttpClient框架关于多文件批量上传的问题,改用xUtil
RequestParams params = new RequestParams(); params.add("ordernum",ordernum); params.add(&q ...
- Redis优化总结
# 注意在redis.conf中的小聚合数据类型的特殊编码设置(http://carlosfu.iteye.com/blog/2254572)```hash-max-zipmap-entries 64 ...
- WPF 触发器
属性触发器:数据触发器:事件触发器
- ASP.NET Core 获取控制器上的自定义属性
/// <summary> /// 参考代码Microsoft.AspNetCore.Mvc.Internal.AuthorizationApplicationModelProvider ...
- activemq安装与简单消息发送接收实例
安装环境:Activemq5.11.1, jdk1.7(activemq5.11.1版本需要jdk升级到1.7),虚拟机: 192.168.147.131 [root@localhost softwa ...
- Scala 深入浅出实战经典 第53讲:Scala中结构类型实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...