如何快速渲染带有大量标记的地图?

时间:2013-12-12 02:51:18

标签: ruby-on-rails ruby json google-maps activerecord

所以,我有一个带有很多标记的谷歌地图,有时候是50万。我使用markerclusterer使它可读。

但是将500k结果处理成json文件以便直接输入谷歌地图。

知道如何加快这个过程吗?

1 个答案:

答案 0 :(得分:2)

有一些优化:

  1. 使用原始数据,而不是对象/模型。将数据库中的数据映射到对象需要很多时间。您可以使用ActiveRecord::Base.connection.execute(sql)来查询数据库来消除这种情况。
  2. Russian doll caching非常适合大型数据集。您可以缓存单个记录和记录组。有关缓存过期的一些建议,请参阅"How key-based cache expiration works"。将它与一些内存缓存(如memcached)相结合,结果会更快。
  3. 尽可能少地发送数据。每条记录的每个额外字节有500k记录,将产生半兆字节的额外流量。因此,代替完整的描述性JSON更好地返回一个数组数组。示例:[[<lan1>, <lng1>, <id>], [<lat2>, ...], ...]
  4. 仅在当前范围内呈现标记。我们假设500k记录。如果您将所有这些发送到客户端,那将是at least 500,000 * 47bit~2.8MB的数据编码为字符串/ JSON,这将大得多。因此,不要发送所有记录,而是等待Google地图的idle事件,并仅加载来自服务器的当前边界内的记录/标记。请参阅安德鲁在评论中发布的链接。
  5. 当然, gzip HTTP响应。