最近公司的一個項目上需要在百度地圖上實現點位聚合的功能,首先第一想到的就是去百度地圖開發的官網上下載官方的Demo
我使用的開發工具是Android Studio,解壓安裝包後,通過Android Studio打開工程BaiduMapsApiASDemo,工程名稱中有AS表示是Android Studio的工程,並在虛擬機上執行一遍,找到點聚合功能,並查看效果
然後去工程中查看相關源代碼,並移植到自己的項目工程中去
分析源代碼之後,才發現MarkerClusterDemo類中引用的ClusterManager等類並不在官網下載的jar包中,最後發現是在工程文件中
要想實現和官方Demo相同的點聚合效果,就需要把這兩個文件也拷貝到自己的項目工程中,經過實驗發現,不僅僅拷貝過去就能使用的,原則就是缺少什麼就把什麼拷貝到自己工程的相應位置
首先,需要修改兩個類中引入的R文件的路徑,修改成自己的 import 自己的package.R即可
1. com.baidu.mapapi.clusterutil.ui.IconGenerator
2. com.baidu.mapapi.clusterutil.clustering.view.DefaultClusterRenderer
第二,將styles.xml文件中的相關部分拷貝過來
第三,將layout文件夾中的text_bubble.xml文件拷貝過來
然後參照MarkClusterDemo代碼實現自己的類,需要注意的是自己項目中的marker類需要實現ClusterItem接口,具體參照官方Demo
自己項目中實現的點位聚合的效果圖如下:(4000+個點位聚合效果)比較流暢,沒有卡頓
自己也把clusterutil和overlayutil完整的提取出來放到一個空的工程中,方便以後使用