在自己的项目中显示了一个基础的地图MapView控件之后
操作地图 :
- 初始化SDK以及找到控件
SDKInitializer.initialize(getApplicationContext());
MapView
mMapView = (MapView) findViewById(R.id.bmapView);
- 得到BaiduMap对象 官方文档描述的是
: 该类是地图对象的操作方法与接口
BaiduMap
mBaiduMap = mMapView.getMap(); 通过View控件的getMap方法得到BaiduMap对象
- 通过BaiduMap对象设置地图的一些属性,比如:
// 定义中心点(哈尔滨中央大街的经纬)
LatLng cenpt = new LatLng(45.784,126.624); //① // 定义地图状态
MapStatus mMapStatus = new MapStatus.Builder().target(cenpt).zoom(18).build(); //② // 定义地图状态将要发生的变化
MapStatusUpdate mMapStatusUpdate =
MapStatusUpdateFactory.newMapStatus(mMapStatus); //③ // BaiduMap对象改变地图状态
mBaiduMap.setMapStatus(mMapStatusUpdate); //④
①LatLng类只有两个属性 用来描述地理坐标基本数据结构(纬度,经度)
②MapStatus.Builder是地图状态构造器 target设置地图中心点 zoom设置地图缩放级别
build()方法生成一个MapStatus地图状态对象 ③MapStatusUpdateFactory,生成地图状态将要发生的变化描述 newMapStatus()方法设置地图新状态
MapStatus就是地图状态对象MapStatusUpdate对象是生成的地图变化描述 ④BaiduMap对象用setMapStatus()方法改变地图状态(参数的含义是根据描述去改变)
其实听起来有些难理解
通过面向对象的思维 我这样理解 : 地图要改变-->地图操作者去改变-->按照客户要求(可能有新的中心点,缩放度)生成一个地图状态
-->地图操作者看不懂状态需要人描述一下状态的含义-->地图操作者根据描述去开始操作地图 对应的类的关系 :
MapView要改变-->用BaiduMap去操作-->根据MapStatus的状态改变-->
BaiduMap看不懂状态MapStatus 需要MapStatusUpdate去描述-->BaiduMap通过描述去改变-->
MapView改变
- BaiduMap可以设置很多关于MapView的属性
//开启交通图
mBaiduMap.setTrafficEnabled(true);