Google 地图 - 服务器端聚类

3
我有大约500,000个标记,自然不能全部显示。我尝试了MakerClusterer,但是js在地图上绘制聚类太复杂了。我考虑使用服务器端聚类器,但比javascript解决方案慢得多!
你知道这个问题的任何解决方案吗?我知道500,000是非常巨大的数字,但php应该至少和js一样快。这可能是实现的问题。也许有其他已知有效的解决方案?谢谢。

你的服务器端应用可能存在优化潜力。但是,如果不了解详细信息,就无法确定。 - Pekka
是的,你说得对。问题在于 PHP 脚本运行了一个多小时,却没有任何结果。相比之下,JavaScript 版本只需要大约 10 分钟。这一定是糟糕的编码风格或其他什么问题。 - Jacek Francuz
可能只是你代码中的一个错误吗?比如说无限循环? - Has QUIT--Anony-Mousse
3个回答

1

您想寻找一个空间填充曲线或者一个空间索引(数据库)。空间填充曲线将二维复杂度降低到一维。您可以查看Nick的希尔伯特曲线四叉树空间索引博客。顺便说一下,我已经实现了一个PHP类来使用希尔伯特曲线搜索邮政编码。它采用了一种非递归的表格方法,并且可以使用所有4个希尔伯特曲线。您可以在phpclasses.org(hilbert-curve)上找到我的类。


1

看起来很有趣:http://googlemapsmania.blogspot.com/2010/05/fusion-tables-google-maps-api.html。 - Micromega
1
但是Fusion Tables没有聚类! - Micromega
1
请在这个答案中详细说明,为什么超链接有帮助? - Tim Post
@Tim:如果你指的是这个http://code.google.com/apis/maps/documentation/javascript/examples/layer-fusiontables-simple.html,那么它不是聚类,因为你可以看到每个标记而不是嵌套在缩放级别中。在我看来,服务器端聚类是指当你拥有某种空间索引并对其运行BFS时。也请参阅我的关于sfc和四叉树的帖子。 - Micromega

-1

如果您不介意使用Django,可以尝试我的应用程序:

https://github.com/biodiv/anycluster

它使用postgis kmeans聚类。您可以轻松地将机制适应于您的地图,例如通过在优化性能时根据缩放级别选择gridcluster / kmeanscluster之间进行选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接