百度地图点聚合,加载1万个marker

    项目需要同时展示多辆车,并且在15s刷新一次。开始用到的是添加多个marker,但是随着车辆的整多,发现发现这种方式已经不能满足需求。于是准备用到百度的点聚合功能,顾名思义,点聚合就是把一定范围的点进行集合显示。看下图就明白了

百度地图点聚合,加载1万个marker

    在这之前,需要做一下3个准备:

  • 在百度地图开发者平台申请账号
  • 在控制台申请应用
  • 把你申请的放在你自己项目的AndroidManifest.xml的API_KEY

      我自己参考的是百度地图提供Android SDK的demo,于是把这一部分单独提出,集合成了一个自己的小demo。ok过程很愉快。自己加了10个点,发现没毛病。于是乎,在加了1000个点,这个时候发现手机,有一点卡了。哈哈这是啥原因呢?

  于是看了一下源码,发现百度地图的处理是一次加载所有,哈哈找到原因下面就是寻找解决方法了:就是这个地方

百度地图点聚合,加载1万个marker 

    那,,,怎么解决呢?

     想到一个方案。如果只绘制当前屏幕内的marker,是不是可以解决这个方法。于是通过百度地图提供的Api对屏幕的左上右下坐标进行了转换。在绘制marker的时候。添加条件,在屏幕内时才进行绘制。如下:由于有上传源码,所以就不具体的讲解实现,这个demo中会进行15s自动刷新,以及在点击marker时,在marker上方弹出一个View这些都不做描述,如有需要可以留言共同探讨。只是把解决这个问题的思路描绘清楚。

    百度地图点聚合,加载1万个marker

    最后,自己添加了1W个marker测试了下,运行流畅

    源码下载