转载请注明出处:http://blog.csdn.net/crazy1235/article/details/43898451
前两篇关于百度地图的blog写的是,一些基本图层的展示 和 覆盖物的添加+地理编码和反地理编码。
接下来,这篇blog主要说一些关于地图控制方面的内容和定位功能。
百度地图提供的关于地图的操作主要有:单击、双击、长按、缩放、旋转、俯视等。
地图控制
我们现在已经知道,想要显示一个地图,只需要在xml文件中添加一个MapView控件即可,但是想要对其进行一些控制,就需要通过这个控件返回一个BaiduMap对象。
从API中先看一下MapView的方法:
对于MapView这个类,官方解释是一个显示地图的视图,负责从服务器端获取地图数据,并且会捕捉到屏幕触控手势事件。使用这个类必须按照它的生命周期进行操作,从上图可以看到,它包括一些类似于activity生命周期的方法:onResume()、onPause()、onDestory()。所以我们需要在activity的各个生命周期中,把MapView的各个生命周期函数添加进去。
在使用地图控件之前必须调用SDKInitializer.initialize(Context)函数用以提供全局Context信息。
默认情况下,地图显示的时候会带着原生的缩放控件:。还有比例尺控件:
。
通过showZoomControls(boolean show)和showScaleControl(boolean show)这两个方法可以设置显示或者不显示两个控件。还可以通过设置setxxxPosition(Point p)方法来设置控件的位置。
mapView.showZoomControls(false);// 不显示默认的缩放控件
mapView.showScaleControl(false);// 不显示默认比例尺控件
要想实现地图的一些控制,就需要使用到BaiduMap,这个类是专门用来操作地图控件的。
上面的四个接口就是用来对地图添加相应的事件的。我们主要看一下下面的两个方法,它们都是以动画的方式更新地图状态。不同的是一个可以指定时长,另一个有默认的动画耗时。
参数MapStatusUpdate描述的是地图状态将要发生的变化。也就是说,要想改变地图的某些状态,需要构造出一个MapStatusUpdate对象,然后使用animateMapStatus()方法来更新地图状态。但是并没有在API中找到它的相关的构造方法。但是在com.baidu.mapapi.map包下面找到了对应的"工厂类"。
打开MapStatusUpdateFactory可以看到很多静态的方法:
通过这些静态的方法能够构造出各种类型的MapStatusUpdate对象。
zoomIn()和zoomOut()分别