服务器端 Google 标记聚类 - Python/Django
在尝试用客户端的方法来处理大量谷歌标记的聚合后,我发现这对我的项目来说是不可能的(我的社交网络有超过28,000个用户)。
有没有关于在服务器端聚合坐标的例子 - 最好是用Python/Django来实现的?
我希望这个功能的工作方式是根据标记之间的距离(半径)和缩放级别逐渐进行索引。
换句话说,当一个新用户注册时,他/她会自动被分配到一组彼此靠近的标记中,从而增加这个“组”的计数。发送到服务器的只是少量的“组”。只有当地图的缩放级别是1:1时,实际的用户才会显示在地图上。
这样,客户端每次请求/缩放级别只需要处理10到50个标记。
4 个回答
0
一种方法是根据缩放级别来定义一个网格,网格的单位大小就是这个缩放级别。你可以把所有的点根据经纬度(保留到小数点后一位)放到一个网格里。比如说,42.2x73.4就是一个网格的坐标。如果有一个点的坐标是42.2003x73.4021,那它就落在这个网格里。这个网格的边界是42.2x73.3到42.2x73.5之间。
如果一个网格里有一个或多个点,你就可以在这个网格的中心放一个标记。
接着,你需要监听缩放结束的事件,然后根据新的缩放级别调整网格的大小,并重新绘制标记。
http://code.google.com/apis/maps/documentation/reference.html#GMap2.zoomend