Android:百度地图,点聚合功能
来源:互联网 发布:阿里云域名接入 编辑:程序博客网 时间:2024/05/23 02:07
每周坚持写博客,愿意共同促进。
最近由于工作需要使用到百度地图上的点聚合功能,查找网上的资料写的不是很详细,走过了不少坑,今天特别把完整的过程写下来。
实现百度地图的点聚合功能,第一步要下载百度地图的SDK,并进行安装,这里就过多介绍了。下面开始介绍如何实现百度地图的点聚合功能,要在百度地图的下载里面下载百度地图的Demo,在下载里面找到BaiduMap_AndroidSDK_v4.3.0_Sample 文件夹,打开找到BaiduMapsApiASDemo,然后在app>src>main>java>clusterutli,将整个文件clusterutil复制粘贴到
下面就到了最麻烦的时候了,你需要将所有的文件路径修改自己程序的文件路径,
首先,需要修改两个类中引入的R文件的路径,修改成自己的 import 自己的package.R即可
1. com.baidu.mapapi.clusterutil.ui.IconGenerator
2. com.baidu.mapapi.clusterutil.clustering.view.DefaultClusterRenderer
第二,将styles.xml,string.xml的文件中的相关部分拷贝过来
第三,将layout文件夹中的text_bubble.xml文件拷贝过来
下面就是实现聚合的代码:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.bmapView); ms = new MapStatus.Builder().target(new LatLng(39.914935, 116.403119)).zoom(8).build(); mBaiduMap = mMapView.getMap(); mBaiduMap.setOnMapLoadedCallback(this); mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(ms)); // 定义点聚合管理类ClusterManager mClusterManager = new ClusterManager<MyItem>(this, mBaiduMap); // 添加Marker点 addMarkers(); // 设置地图监听,当地图状态发生改变时,进行点聚合运算 mBaiduMap.setOnMapStatusChangeListener(mClusterManager); // 设置maker点击时的响应 mBaiduMap.setOnMarkerClickListener(mClusterManager); mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener<MyItem>() { @Override public boolean onClusterClick(Cluster<MyItem> cluster) { Toast.makeText(MainActivity.this, "有" + cluster.getSize() + "个点", Toast.LENGTH_SHORT).show(); return false; } }); mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<MyItem>() { @Override public boolean onClusterItemClick(MyItem item) { Toast.makeText(MainActivity.this, "点击单个Item", Toast.LENGTH_SHORT).show(); return false; } });} @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { mMapView.onDestroy(); super.onDestroy(); } @Override public void onMapLoaded() { // TODO Auto-generated method stub ms = new MapStatus.Builder().zoom(9).build(); mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(ms)); } public class MyItem implements ClusterItem { private final LatLng mPosition; public MyItem(LatLng latLng) { mPosition = latLng; } @Override public LatLng getPosition() { return mPosition; } @Override public BitmapDescriptor getBitmapDescriptor() { return BitmapDescriptorFactory .fromResource(R.drawable.icon_gcoding); } } /** * 向地图添加Marker点 */ public void addMarkers() { // 添加Marker点 LatLng llA = new LatLng(39.963175, 116.400244); LatLng llB = new LatLng(39.942821, 116.369199); LatLng llC = new LatLng(39.939723, 116.425541); LatLng llD = new LatLng(39.906965, 116.401394); LatLng llE = new LatLng(39.956965, 116.331394); LatLng llF = new LatLng(39.886965, 116.441394); LatLng llG = new LatLng(39.996965, 116.411394); List<MyItem> items = new ArrayList<MyItem>(); items.add(new MyItem(llA)); items.add(new MyItem(llB)); items.add(new MyItem(llC)); items.add(new MyItem(llD)); items.add(new MyItem(llE)); items.add(new MyItem(llF)); items.add(new MyItem(llG)); mClusterManager.addItems(items); }}
这样百度地图的聚合功能就实现了,如何大家需要源代码,可以私信联系我。看一下效果图:
1 0
- Android百度地图点聚合功能
- Android:百度地图 点聚合功能
- Android:百度地图,点聚合功能
- 使用百度地图的点聚合功能
- 百度地图开发之点聚合功能
- Android百度地图点聚合开发
- 百度地图聚合点
- 百度地图点聚合开发-地图找房功能
- Android百度地图点聚合功能的子项目点击事件
- 简析百度地图点聚合功能----ClusterManager类
- 百度地图API 重新生成点聚合的功能
- 百度地图点聚合提高效率
- 百度地图点聚合改造
- android地图点聚合
- 安卓高德地图点聚合功能
- Android_百度地图,点聚合功能,点击事件&&设置聚合数字的背景颜色
- android项目中实现百度地图中点聚合功能
- 百度地图点聚合的聚合点样式修改
- angularJS的选择框select
- 张飞硬件设计与开发视频
- Hololens官方教程精简版
- Linux学习之十六(bash脚本编程之五 字符串测试及for循环)
- javaScript 变量 作用域和 内存问题
- Android:百度地图,点聚合功能
- qcom I2C driver i2c-msm-v2.c code analysis
- Atom常用快捷键整理
- 过滤表情获取过滤后的字符长度(通过正则表达式)
- 新路程------在uboot中配置ip地址
- Jsp的四大作用域与九大对象
- Vector3.Dot和Vector3.Cross的使用
- Android -- Wifi热点的打开与关闭流程简介
- JS根据url判断当前标签是否激活