2009-07-12 35 views
26

是否有任何JavaScript庫允許您使用瀏覽器中的圖形渲染功能(如<canvas>或SVG)創建熱圖?使用<canvas>元素創建熱圖?

我知道HeatMapAPI.com,但他們的熱圖是在服務器端生成的。我認爲在<canvas>元素的時代,我們不再需要這個了!

如果沒有這樣的事情,有沒有志願者參與創建這樣的工具?

+0

IE 8及以下版本沒有畫布支持。 – 2009-07-12 22:09:15

+1

是的,但是由於Explorer Canvas(ExCanvas),IE對Canvas標籤 – 2009-07-12 22:11:51

+0

的部分支持是正確的,但這是一種快速修復的方法。 – 2009-07-12 22:16:01

回答

40

我創建包括與<canvas>元素和javascript實時熱圖的演示。我還在heatmap示例旁邊添加了記錄的代碼。熱圖生成過程基於canvas元素中的alpha地圖,取決於用戶的鼠標移動。 你可以看看我的演示在這裏: http://www.patrick-wied.at/static/heatmap/

+0

感謝您的演示,非常有用+1 – 2011-02-04 17:26:38

+0

嘿帕特里克。是否可以更新heatmap.js以在單獨的線程(使用web-workers)中工作,因此如果要繪製大量數據,則只會告訴工作人員計算屏幕外畫布,並在發送畫布時向您發送畫布完成? – Cristy 2014-02-11 19:53:41

+0

嘿克里斯蒂。不幸的是,由於與canvas元素緊密耦合,Web工作人員不支持canvas。如果你正在尋找顯示更多的數據點,我有一個好消息:我目前正在研究heatmap.js v2並做了一些主要的性能優化。在v2中,您可以可視化至少20k個數據點,而不會注意到任何性能損失 – 2014-02-11 20:22:07

4

我在Google Visualization API幫助下創建了一個匹配圖[http://code.google.com/apis/visualization/documentation/]。它使用SVML & VML,並且還跨瀏覽器兼容。希望它會有所幫助。

+2

你可以分享你使用的可視化嗎?我在可視化圖庫(http://code.google.com/apis/visualization/documentation/gallery.html)中看不到熱點圖。 我想要做的是在Google地圖上放置熱圖。我知道我可以使用這個:http://code.google.com/p/gheat/,但是GHeat不使用(它使用服務器端生成的png代替)。 – warpech 2009-08-02 13:38:30

2

我有一些js/canvas/web worker代碼here,儘管可以用它做很多工作。它也被推送到網上http://heatmapthing.heroku.com/。您的瀏覽器需要爲此支持Web工作人員。

如果您改善請發送拉請求。現在,僞高斯平滑是slooooooooow。

2

我也試了一下,但沒有做高斯平滑我的自我,我讓帆布爲我做。基本上,我爲灰階中的每個點繪製徑向漸變,然後着色此灰階圖像(有關詳細解釋,請參閱"Creating Heat Maps with .NET 2.0 (C#)",我的實現有點不同)。

結果看起來是這樣的:

Heat Map with JavaScript and Canvas

的渲染時間是無法在Chrome /鉻壞。我認爲最耗時的部分是着色,因爲我正在循環每個像素。

你可以在這裏找到代碼:http://trac.openlayers.org/browser/sandbox/camptocamp/canvas/openlayers/lib/heatmap-js/heatmap.js

0

Heatcanvas看起來相當不錯。它也有一個小葉擴展到開放街道地圖 https://github.com/sunng87/heatcanvas

它運行得很好的幾個點(< 200)左右上運行,但得到許多千點的速度有點慢。我認爲在pan和zoom之後,它可能會重新計算的次數超過必要的次數,並且我在動態更改熱圖(用另一個使用javascript替換熱圖)時遇到了一些問題,我想還是試試一下,或者聯繫作者