在我們的應用中,我們使用谷歌地圖API v1。 我爲標記編寫了基於網格的集羣(總金額高達幾千)。一切工作正常 - 性能好,等等 唯一的問題是根據當前觀測區域在地圖上創建自適應網格進行聚類
private void createCluster2DArray() {
double cwidth = (cachedrightLongitude - cachedleftLongitude)/clustersXnum;
double cheight = (cachedtopLatitude - cachedbottomLatitude)/clustersYnum;
for (int i = 0; i < clustersXnum; i++) {
for (int j = 0; j < clustersYnum; j++) {
Cluster cluster;
if (clusters[i][j] == null) {
cluster = new Cluster();
clusters[i][j] = cluster;
} else {
cluster = clusters[i][j];
cluster.list.clear();
}
//calculate dimensions
cluster.left = cachedleftLongitude + i * cwidth;
cluster.right = cluster.left + cwidth;
cluster.bottom = cachedbottomLatitude + j * cheight;
cluster.top = cluster.bottom + cheight;
cluster.calculateCenter(mMapView);
}
}
}
cachedrightLongitude, cachedrightLongitude, cachedrightLongitude, cachedrightLongitude
爲度設備屏幕區域的邊界,我計算網格。 您可以看到,問題是每次用戶更改可見區域(更改縮放級別或僅滑動屏幕)時,羣集邊框都會發生更改。這導致羣集重新計算和標記重新分配。
我看到的唯一解決方案是爲每個縮放級別創建一些靜態的與屏幕無關的羣集貪婪(例如,在縮放級別5時,羣集大小將爲10milli度,在級別6時爲2milli度,所以只有邊界羣將動態地改變它們的大小和外部邊界)。我對嗎?
還有其他建議嗎?
Wielkiedzięki,Maciej。你的回答非常有幫助。 – 2013-05-03 06:45:17