【发布时间】:2013-01-08 02:56:21
【问题描述】:
我想知道cluster map markers 的最佳方式是什么?我们目前在我们的应用程序中使用谷歌地图,其中每个实体都在地图上定义一个点,并有一个grid based clustering algorithm (64px X 64px grid) 用于对实体点进行聚类。这对大约 8 万个实体来说效果很好。我们拥有从 5000 到 150 万个实体不等的数据集。
1.5 million dataset 的问题在于,有这么多的标记,地图上几乎每个网格都是一个聚集标记,这不仅会导致糟糕的 UI(每个网格上都有一个聚集标记),而且还会增加地图的加载时间.
1) Client Side - 我已经尝试过客户端集群 (Map Clusterer)。这不起作用,因为具有 150 万个实体的 json 对象本身会减慢系统速度,而且 Map Clusterer 最多只能使用 50k 个标记。
2) Server Side - 如此庞大的数据集的问题是我什至无法查询所有实体,所以我想在 SQL 中使用基于网格的第一级聚类,然后在获得基于密度的聚类首先传递来自 SQL 的集群结果,每个集群都有一个 clusterCount 和 avg lat/long。
或者,如果对如此庞大的数据集有更好的想法,(我读到了 MAFIA, CLIQUE clustering http://www.siam.org/proceedings/datamining/2001/dm01_07NageshH.pdf )。
另外,在某些时候,我真的很想缓存这些数据(尽管这应该在一个单独的问题中提出),但如果有人也可以提供一些缓存技术,请记住集群、视口和缩放级别,这会很有帮助。
【问题讨论】:
-
在这一点上,我会接受任何答案...有没有人尝试过 K-means 或四叉树进行聚类?
标签: javascript algorithm google-maps map google-maps-markers