服务器端集群?

时间:2016-01-02 09:43:12

标签: php ajax google-maps google-maps-api-3 markerclusterer

我正在拼命寻找能够处理多达50 000个标记正确的解决方案(如果服务器可以处理它,为什么不能更多)在我的服务器上很容易,我已经好几天了。

概念是这样的:

enter image description here

  • 什么是群集服务器的最佳解决方案/语言 侧?我不是在寻找一个庞大的工作代码,但我需要被推向正确的方向。
  • 如何"缓存" "标记" 已加载的群集/标记,以便您 当地图放大/缩小或平移时,是否会重新加载已加载的标记/群集?

理论值:

正确的方法似乎与此相似:

  • 如果地图缩小并且有很多标记,请在服务器中处理群集
  • 如果地图放大到所有标记不再适合视口的点,则只聚类视口中的标记 - 也是服务器
  • 如果缩放变得如此之大,以至于视口中的标记数量变小(例如<&lt; 500) cluster in browser via JS

我可以在服务器端使用的数据,我也可以通过JSON发送到浏览器:

  • 在提出请求时将通过ajax发送的地图边界映射到服务器
  • 数据库查询中的标记总数
  • 数据库查询中的标记坐标
  • 可能是我目前没有意识到的其他重要/有用的东西

1 个答案:

答案 0 :(得分:2)

我正在使用具有50,000 100,000多边形的谷歌地图应用程序已经证明将多边形组织成一系列区域(表格逻辑,区域或类似)的可能性非常有用。使用已经显示的通过ajax发送到服务器的区域数组以及您绑定的坐标允许我仅选择尚未显示的区域,从而减少带宽分配是渲染多边形的时间,

其余策略是正确的。对于更彻底的评估,应该深入了解社会中的实际情况。

对于服务器端语言,他们都没关系,我个人现在我正在使用PHP和框架Yii2与MySQL的PDO驱动程序。重要的是使用一个环境可以非常方便有效地访问数据库。

在这些条件下,使用群集的良好组织以及在缩放级别允许的情况下向区域显示多边形会使应用程序谷歌地图表现非常好

请注意,标记的外观比多边形的更快,因为它减少了所涉及的坐标数量和图形特征。

对于像你这样的一般性问题很难在网上找到一个好的答案。对于区域,取决于您管理的区域的尺寸和标记的平均密度。对于不靠近极点的区域,您可以使用一小部分坐标...或者如果您的地理位置具有与区域相关的某些属性,则可以使用它们。您可以在线找到公式,以便根据区域的大致尺寸链接缩放。还取决于如何完成标记的收集。就我的情况而言,在收集期间,我需要一些属性来满足这种需求。

对于检查,标记或一组标记已经在地图中我使用简单的向量并使用此(通过ajax)与服务器进行dinamic交换。矢量为空的初始时间,矢量逐渐包含&#34;知道&#34;什么已经显示。