2013-12-12 72 views
0

所以,我有一個谷歌地圖有很多標記,有時500 000.我使用markerclusterer使它可讀。如何快速渲染大量標記的地圖?

但處理500k結果到一個json文件,以飼養谷歌地圖需要永遠。

任何想法如何加快過程?

+0

我建議你更具體。你知道是什麼讓這個過程變得緩慢嗎?活動記錄查詢? json數據?或在谷歌地圖實際的JavaScript渲染? – Agush

+2

https://developers.google.com/maps/articles/toomanymarkers –

回答

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響應。