Android百度地图点聚合功能
来源:互联网 发布:地下城组队网络冲突 编辑:程序博客网 时间:2024/05/22 15:32
在百度地图的开发说明中有描述到点聚合功能:
点聚合功能
自v3.6.0版本起,新增点聚合功能,可通过缩小地图层级,将定义范围内的多个标注点,聚合显示成一个标注点,并在MarkerClusterDemo中开放源码,方便开发者自行修改。
具体源码请在MarkerClusterDemo中查看。
到该功能并不在SDK里面,需要自己导入源码。
下载最新百度地图SDK全包:BaiduMap_AndroidSDK_All_V3.7.1,将API Demo里面的clusterutil整个目录拷贝到自己的工程里面:
还有需要用到的res资源也拷贝过去,具体需要拷贝哪些忘了记了, 通过编译可以发现缺哪些,对应拷贝就是。
整个代码的逻辑还没细看,下面是自己项目中有修改到的内容
1、创建实现ClusterItem 接口的类,该类用于表示地图上的一个标记的点,后续将这些标记点的对象添加到聚合地图的管理容器里面,实现点聚合功能。
public class SwitBdItem implements ClusterItem {
// 可以添加自己的属性,比较该标记点关联到一个设备,可以添加一个设备的引用,在地图上点击这个点时可以显示出设备名称 private Context context; private final LatLng mPosition; public SwitBdItem(LatLng latLng) { mPosition = latLng; }<span style="white-space:pre"></span> // 返回标记点的坐标<span style="white-space:pre"></span> @Override public LatLng getPosition() { return mPosition; } // 返回标记点的标记图标,可以自定义一个View上面叠加自己的内容 @Override public BitmapDescriptor getBitmapDescriptor() { View view; view = LayoutInflater.from(context).inflate(R.layout.item_blue, null); TextView textView = (TextView) view.findViewById(R.id.icon_title);textView.setText(title + "");return BitmapDescriptorFactory.fromView(view); }}
2、定义一个聚合功能的管理容器,表示这个点聚合的地图管理容器上要标注SwitBdItem类型的点
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span>
private ClusterManager<SwitBdItem> mClusterManager;mClusterManager = new ClusterManager<SwitBdItem>(context, mBaiduMap); // mBaiMap是百度地图结构
3、设置点击图标时的事件,在我的项目里面需要实现点击地图点时,显示出相关信息,所以需要设置捕获点击图标事件。
要使该侦听事件生效,需要设置mClusterManager侦听地图的setOnMarkerClick事件
mClusterManager.setOnClusterItemClickListener(new SwitOnClusterItemClickListener());
mBaiduMap.setOnMarkerClickListener(mClusterManager);
SwitBdItem bdItem = new SwitBdItem(ll);mClusterManager.addItem(bdItem);
通过以上配置后,发现在点击地图上的标记点时,并不会触发SwitOnClusterItemClickLister函数,通过查看源码发现:
mClusterManager.setOnClusterItemClickListener(new SwitOnClusterItemClickListener());
ClusterManager类:
public void setOnClusterItemClickListener(OnClusterItemClickListener<T> listener) { mOnClusterItemClickListener = listener; mRenderer.setOnClusterItemClickListener(listener); }
DefaultClusterRenderer类:
public void setOnClusterItemClickListener(ClusterManager.OnClusterItemClickListener<T> listener) { mItemClickListener = listener; }
点击地图点时,调用的是ClusterManager的onMarkerClick方法,但是该方法在目前实现中是直接返回false,需要修改为:
@Override public boolean onMarkerClick(Marker marker) { return mMarkerManager.onMarkerClick(marker);
另外可通过修改DefaultClusterRenderer类里面的MIN_CLUSTER_SIZE参数来设置当几个点叠在一起时,要进行聚合,默认是4
- Android百度地图点聚合功能
- Android:百度地图 点聚合功能
- Android:百度地图,点聚合功能
- 使用百度地图的点聚合功能
- 百度地图开发之点聚合功能
- Android百度地图点聚合开发
- 百度地图聚合点
- 百度地图点聚合开发-地图找房功能
- Android百度地图点聚合功能的子项目点击事件
- 简析百度地图点聚合功能----ClusterManager类
- 百度地图API 重新生成点聚合的功能
- 百度地图点聚合提高效率
- 百度地图点聚合改造
- android地图点聚合
- 安卓高德地图点聚合功能
- Android_百度地图,点聚合功能,点击事件&&设置聚合数字的背景颜色
- android项目中实现百度地图中点聚合功能
- 百度地图点聚合的聚合点样式修改
- JSONObject 解析json的步骤
- 机器学习中的特征工程总结一
- DAO层,Service层,Controller层、View层
- php安装及相关配置
- 由退租想到的
- Android百度地图点聚合功能
- (嵌入式开发)自己写bootloader之编写第二阶段
- 小食代遇到的坑
- CentOS统计文件并显示图片文件
- 高性能可靠服务集群架构
- 本周日记
- 酷欧天气实战
- 缅怀
- 华硕笔记本使用老毛桃工具迅速重装系统(动作快估计就二十分钟,高手勿喷)