2011-02-24 24 views
2

我正在使用gRaphael JS lib繪製折線圖。 和haverColumn函數有一些問題。 這是我簡化的hoverColumn函數。執行g.raphael js(graphaeljs),line,hoverColumn問題

var line = raphael.g.linechart(50, 20, 650, 120, xAry, yAry, options).hoverColumn(function(){ 
    ... 
    console.log(this.x+","+this.y); 
    .... 
} 

當鼠標懸停在圖表上, hoverColumn函數被調用,並登錄功能。 但是,某些區域不會調用hoverColumn函數。

所以,我使用螢火蟲進行調試,我找到了原因。 線圖上有一些大的矩形區域,當鼠標位於該區域時, ,儘管 鼠標位於圖表的列上,但hoverColumn不會被調用。

這裏是一個捕獲的圖像,以幫助理解。 火蟲,和rect。

enter image description here

當我刪除RECT使用螢火蟲手動, hoverColumn功能運作良好〜-_-;

區號是由gRaphael-js自動生成的。

那麼,有什麼辦法可以解決這個問題嗎? 任何想法請〜

回答

8

我發現最後的解決方案(需要1天黑客... = _ =;)。 問題出在g.line.js,graphael js庫。

在源代碼中

, 有這樣的功能createColumns,

function createColumns(f) { 
     // unite Xs together 
     var Xs = []; 
     for (var i = 0, ii = valuesx.length; i < ii; i++) { 
      Xs = Xs.concat(valuesx[i]); 
     } 
     Xs.sort(); 
     .... 
     ... 
     .. 
} 

問題是排序功能。 Xs.sort()對x值進行排序,但該函數返回帶錯誤的排序數組。 所以,如果輸入陣列,

valuesx = [0.05076044713698533, 9.579202857778233, 10.93181619059174]; 
valuesx.sort(); 

結果是

[0.05076044713698533, 10.93181619059174, 9.579202857778233] 
not 
[0.05076044713698533, 9.579202857778233, 10.93181619059174] 

作爲結果,列被打破〜

所以,我改變排序功能,Xs.sort ()像這樣:

Xs.sort(function(a, b){ 
      return a - b; 
     }); 

很好用〜^^; 希望這有助於〜

+0

謝謝,當我嘗試使用hoverColumns時遇到了同樣的問題。看起來這個問題已經[報道](https://github.com/DmitryBaranovskiy/g.raphael/issues#issue/9)[multiple](https://github.com/DmitryBaranovskiy/g.raphael/issues#issue/19)[times](https://github.com/DmitryBaranovskiy/g.raphael/issues#issue/60)。直到它被修復,看起來像我需要在我的g.line.js中手動實現它。 – scurker 2011-03-24 14:54:38

+0

感謝您的黑客。我知道我很晚但對我有很大的幫助。 – 2011-05-19 07:04:50

+1

謝謝,我只是打錯了,所以這篇文章節省了我很多時間。我發現了許多GitHub叉子,包括修補程序和其他很好的例如文檔。我結束了使用[這一個](https://github.com/mobz/g.raphael)。 – 2011-06-23 19:34:06