Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 服务器端集群?_Php_Ajax_Google Maps_Google Maps Api 3_Markerclusterer - Fatal编程技术网

Php 服务器端集群?

Php 服务器端集群?,php,ajax,google-maps,google-maps-api-3,markerclusterer,Php,Ajax,Google Maps,Google Maps Api 3,Markerclusterer,我一直在拼命寻找一个合适的解决方案,它可以处理多达50000个标记(如果服务器可以处理,为什么不能处理更多标记),同时在我的服务器上也很轻松,我已经这样做了好几天了 概念是这样的: 集群服务器的最佳解决方案/语言是什么 一边我不是在寻找一个庞大的工作代码,但我需要被推到正确的方向 如何“缓存”或“标记”已加载的群集/标记,以便 当地图放大/缩小或平移时,不会重新加载已经加载的标记/簇吗 理论: 正确的道路似乎与此类似: 如果地图缩小并且有很多标记,请在服务器中处理群集 如果将地图放

我一直在拼命寻找一个合适的解决方案,它可以处理多达50000个标记(如果服务器可以处理,为什么不能处理更多标记),同时在我的服务器上也很轻松,我已经这样做了好几天了


概念是这样的:


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

理论:

正确的道路似乎与此类似:

  • 如果地图缩小并且有很多标记,请在服务器中处理群集
  • 如果将地图放大到所有标记不再适合视口的点,则只对视口中的标记进行群集-也对服务器进行群集
  • 如果缩放太大以至于视口中的标记数量变小(例如<500),

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

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

我正在使用google maps应用程序处理50000 100000个多边形。事实证明,将多边形组织成一系列区域(表逻辑、区域或类似区域)非常有用。使用通过ajax发送到服务器的已显示区域阵列以及绑定的坐标,我可以仅选择尚未显示的区域,从而减少带宽分配,这是渲染多边形的时间

因为剩下的策略是正确的。为了进行更彻底的评估,应该在社会上进行深入的技术评估

对于服务器端语言,它们都还可以,我个人现在正在使用PHP和框架Yii2以及用于MySQL的PDO驱动程序。重要的是使用一个环境可以使访问数据库变得非常简单和高效

在这些条件下,使用良好的集群组织,并在缩放级别允许的情况下将多边形显示到区域,这使得谷歌地图应用程序的性能非常好

请注意,标记的外观比多边形的外观快,因为它所涉及的坐标数及其图形特征较少

对于像你这样的一般问题,很难在网上找到好答案。对于区域,取决于所管理区域的尺寸和标记的平均密度。对于不靠近极点的区域,可以使用坐标的一小部分。。或者,如果您的地理点具有与区域相关的属性,则可以使用它们。您可以在线找到用于链接缩放与面积近似尺寸的公式。还取决于标记的收集方式。就我而言,在收集过程中,我评估了一些属性以满足这一需求


为了检查地图中是否有一个标记或一组标记,我只使用vector,并使用它(通过ajax)与服务器进行dinamic交换。第一次向量为空时,向量存储逐步包含“知道”已显示内容的元素

如何处理该区域/区域逻辑,以便在特定缩放级别上已加载的标记不再加载?这是我目前最大的问题。另外,如何有效地检查标记是否位于地图边界/视口中?这么多未回答的问题,网上却没有有效的解决方案。我已经更新了答案。。我希望这是有用的,否则你必须张贴几个更具体的问题。