我是Google Maps API的新手,刚刚接手了RoR应用程序,该应用程序使用MarkerClusterer在地图上绘制多达2,000个标记,并且每个标记都有一个相关的信息窗口。

当前实现在JavaScript中创建了一个信息窗口内容字符串数组,并将JavaScript下载到浏览器。未经压缩(不进行服务器内容压缩)的数组和Javascript可以达到9 MB。

我发现与此实现相关的性能瓶颈是: 1.在服务器上创建2000个字符串并将其放入JavaScript数组的时间。 (〜4-5秒) 2.在发送到浏览器之前,在服务器上压缩多兆JavaScript的时间。 (〜2-3秒)

我的最初想法是为信息窗口内容字符串创建一个包含所有HTML格式的模板,以便信息窗口内容数组中包含的唯一数据是要显示的实际原始数字。这将大大减少在服务器上组装内容字符串数组的计算时间,并相应减少浏览器中该数组消耗的内存。另外,一次只需要打开一个信息窗口。

我不熟悉Google Maps v3 API,因此正在寻找有关这是否是最佳优化策略的指导。而且,任何指向实现这种策略的代码示例的指针。

预先感谢

-斯科特

有帮助吗?

解决方案

我认为您不应该加载数组中的所有2000个数据集,而要执行2种选择之一:

  1. 您仅加载标记,因此仅加载当前视口中的信息窗口。
  2. 单击标记时,您可以通过ajax加载信息窗口内容。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top