写了Android高德地图的点聚合功能

不废话:直接上代码

  private ClusterOverlay mClusterOverlay;    private int clusterRadius = 100;    private void dianjuhePipeout() {        List items = new ArrayList();        if (null!=pipeoutList && !"".equals(pipeoutList) && pipeoutList.size()>0) {            for (int i = 0; i < pipeoutList.size(); i++) {                LatLng latLng = new LatLng(pipeoutList.get(i).getLat(), pipeoutList.get(i).getLng(),false);                RegionItem regionItem = new RegionItem(latLng,                        "test" );                items.add(regionItem);            }            mClusterOverlay = new ClusterOverlay(mAMap, items,                    dp2px(getActivity().getApplicationContext(), clusterRadius),                    getActivity());            mClusterOverlay.setClusterRenderer(this);            mClusterOverlay.setOnClusterClickListener(this);        }    }

里面有一句

mClusterOverlay.setClusterRenderer(this);

这个在类里实现了

public class FragmentMain extends BaseFragment implements SensorEventListener, View.OnClickListener,ClusterRender ,ClusterClickListe

ClusterRender接口,重写了getDrawAble方法

然后看下面的代码  被注释掉的是demo原来的样式,被注释掉的下面的一行是我自己设置的样式,可以分别设置当聚合点=1时,<5,<10和>10时的样式。

  private Map mBackDrawAbles = new HashMap();    @Override    public Drawable getDrawAble(int clusterNum) {        int radius = dp2px(getActivity().getApplicationContext(), 80);        if (clusterNum == 1) {            Drawable bitmapDrawable = mBackDrawAbles.get(1);            if (bitmapDrawable == null) {                bitmapDrawable =                       getActivity().getApplicationContext().getResources().getDrawable(//                                R.drawable.icon_openmap_mark);                                R.mipmap.ic_map_paishui);                mBackDrawAbles.put(1, bitmapDrawable);            }            return bitmapDrawable;        } else if (clusterNum < 5) {        //聚合数量小于5时//            Drawable bitmapDrawable = mBackDrawAbles.get(2);            Drawable bitmapDrawable = getActivity().getResources().getDrawable(R.drawable.yello_56x56);            if (bitmapDrawable == null) {                bitmapDrawable = new BitmapDrawable(null, drawCircle(radius,                        Color.argb(159, 210, 154, 6)));                mBackDrawAbles.put(2, bitmapDrawable);            }            return bitmapDrawable;        } else if (clusterNum < 10) {       //聚合数量小于10时//            Drawable bitmapDrawable = mBackDrawAbles.get(3);            Drawable bitmapDrawable = getActivity().getResources().getDrawable(R.drawable.red_66x65);            if (bitmapDrawable == null) {                bitmapDrawable = new BitmapDrawable(null, drawCircle(radius,                        Color.argb(199, 217, 114, 0)));                mBackDrawAbles.put(3, bitmapDrawable);            }            return bitmapDrawable;        } else {        //聚合数量大于10时//            Drawable bitmapDrawable = mBackDrawAbles.get(4);            Drawable bitmapDrawable = getActivity().getResources().getDrawable(R.drawable.pink_78x77);            if (bitmapDrawable == null) {                bitmapDrawable = new BitmapDrawable(null, drawCircle(radius,                        Color.argb(235, 215, 66, 2)));                mBackDrawAbles.put(4, bitmapDrawable);            }            return bitmapDrawable;        }    }

当然 你也可以按顺序把drawable对象添加到mBackDrawAbles集合中,也是一样的效果,这里我就不多做说明了。 

差点忘了 还有一个方法差点忘记贴了

  /**     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)     */    public int dp2px(Context context, float dpValue) {        final float scale = context.getResources().getDisplayMetrics().density;        return (int) (dpValue * scale + 0.5f);    }

 

更多相关文章

  1. android自定标题栏
  2. android给listview设置分割线Divider样式
  3. anctionbar样式 自定义属性
  4. Android(安卓)主题和样式应用
  5. android应用程序设置全屏
  6. Android中自定义ProgressBar
  7. Android给ListView设置分割线Divider样式
  8. android 自定义progressbar 样式
  9. 2011.09.01(5)——— android checkbox自定义样式

随机推荐

  1. SparseArray详解,我说SparseArray,你说要!
  2. Android中绑定SQLite到ListActivity
  3. window.navigator.userAgent的用处
  4. android 百度推送的集成
  5. Android(安卓)EditText限制输入数字和字
  6. Android基于AudioManager、PhoneStateLis
  7. Android(安卓)Activity分析
  8. android TextInputLayout
  9. 【Android(安卓)Developers Training】 1
  10. Android文件或文件夹内容改变监听器(FileO