2013-02-26 107 views
0

我期望在圖例下方放置一個文本元素(或兩個),並與其右側對齊,但無法獲得一致的座標。確定圖例何時準備就緒

警告:我是SVG的相對小菜鳥。

我有一系列想要顯示圖表的數據集。當我從一個移動到另一個時,我添加了新的serieses並刪除了舊的。每次更新後,我嘗試在圖例下方放置一個包含數據集平均值的字符串。我遇到的問題是,我每隔一個時間查詢x屬性,字符串結束在圖表之外。另一半的時候,我得到了一個完美的結果。

我用的地方這串代碼是:

var tbl=table[3]; 
$('.usData').remove(); 

//get legend x & y 
startX = chart.legend.group.translateX; 
endX = startX + chart.legend.legendWidth; 
startY = chart.legend.group.translateY; 
endY = startY + chart.legend.legendHeight; 
$(tbl.usAvg).each(function(i){ 
chart.renderer.text("National Avg: " + formatData(this,tbl.format), endX, endY+(i*15)+15).attr({'text-anchor':'end',zIndex:12, class:'usData'}).add(); 

我認爲正在發生的是那個傳說開始的情節之外,被翻譯成它的位置。因此,在完成渲染之前,我無法可靠地「抓取」準確的座標。

所以,我的問題:有沒有一種方法來確定(事件)何時圖例完成移動,還是我只需要包括超時和等待?

回答

0

我建議更簡單的解決方案,設置useHTML圖例。 http://jsfiddle.net/aWFYr/1/

$('#btn').click(function(){ 

     $('.highcharts-legend').append('<div style="position:absolute;top:'+(chart.legend.legendHeight)+'px">aaa</div>'); 

    }); 
+0

是的,但隨後的加入DIV不存在於導出的圖像/ PDF。這是最終目標的一部分。 – astangelo 2013-02-28 11:20:36

+0

不在導出的圖像中顯示,因爲它是動態內容,但是當您導出圖表時,它會再次創建。您可以嘗試在加載事件中添加此指令:http://api.highcharts.com/highcharts#chart.events.load – 2013-02-28 11:27:43