场景:
产品嫌弃百度地图自带的缩放按钮太丑,需要自定义,开始我的想法是改变官方的缩放按钮,但是发现这种想法太难实现,实时证明这种想法是不对的。
问题:
如何实现百度地图缩放按钮自定义?
解决方法:
在网上看了很多方法,太复杂了动不动就创建好几个文件,还要写很多代码,我就放弃了。
准备自己去百度地图的官方文档找找答案。果然发现了惊喜,有一个方法就是专门做这件事的。
改变地图缩放等级
根据场景的不同可以分别通过MapStatusUpdateFactory类的zoomTo、zoomIn、zoomOut以及zoomBy四种方法改变地图缩放级别。示例如下:
//直接缩放至缩放级别16
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(16));
//使缩放级别增大一级
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomIn());
//使缩放级别减小一级
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomOut());
//在当前的缩放级别上增加或减小具体的缩放级别
// 4 在当前的缩放级别上增加4
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomBy(4));
// -4 在当前的缩放级别上减小4
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomBy(-4));
此外,上述示例代码中setMapStatus()方法是以直接跳变的效果改变地图缩放级别,开发者可以使用animateMapStatus()方法实现地图缩放级别改变的渐变动画效果。
注意:当设置的地图缩放级别超出SDK支持的最大或最小级别时对应以最大或最小缩放级别显示。
这时候方法就很明朗了,只需简单的两步,几行代码就可以实现。
第一步:按照UI设计写好缩放按钮的视图。
第二步:给缩放按钮添加点击监听,并设置按钮点击后响应的方法即可。
/**
* 点击放大,调用该方法
* 使缩放级别增大一级
*/
@Override
public void zoomIn() {
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.zoomIn());
}
/**
* 点击缩小,调用该方法
* 使缩放级别减小一级
*/
@Override
public void zoomOut() {
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.zoomOut());
}