群集谷歌地图标记

时间:2013-01-24 11:08:32

标签: javascript algorithm google-maps map google-maps-markers

我想知道cluster map markers的最佳方式是什么?我们目前在我们的应用程序中使用谷歌地图,其中每个实体在地图上定义一个点并且具有grid based clustering algorithm (64px X 64px grid)用于聚类实体点。这适用于大约80k实体。我们的数据集从5000到150万个实体不等。 1.5 million dataset的问题在于,如此多的标记,地图上的几乎每个网格都是一个聚类标记,这不仅会导致错误的UI(每个网格上的聚簇标记),还会增加加载时间。地图。

1)Client Side - 我尝试过客户端群集(Map Clusterer)。哪个不起作用,因为json对象本身有150万个实体减慢了系统,Map Clusterer也只能处理多达50k的标记。

2)Server Side - 这样庞大的数据集的问题在于我甚至无法查询所有实体,所以我想在SQL中进行第一级基于网格的聚类,然后在之后进行一些基于密度的聚类从SQL获得第一个聚类结果,每个聚类都有一个clusterCount和avg lat / long。 或者,如果对这些庞大的数据集有更好的了解,(我读过MAFIA, CLIQUE聚类http://www.siam.org/proceedings/datamining/2001/dm01_07NageshH.pdf)。

另外,在某些时候,我真的想要缓存这些数据(尽管应该在一个单独的问题中提出),但如果有人也可以提供一些缓存技术,请记住群集,查看端口和缩放级别,这真的很有帮助。

2 个答案:

答案 0 :(得分:0)

您可以尝试我的kmeans服务器端解决方案:

https://github.com/biodiv/anycluster

(在python / geodjango / postgis中)

如果你有一大笔现金,你可以看一下:

http://www.maptimize.com/

答案 1 :(得分:0)

查看GeoHash:http://en.wikipedia.org/wiki/Geohash

还可以使用Solr索引空间数据:搜索API21和 Apache Solr Search Integration22