只要谷歌不會在將來改變API,這種黑客行爲。此外,它的作品,直到你不使用實驗選項「探險家」。如果您使用縮放,則圖表會在每個鼠標滾輪事件中重新呈現,並且您的值已消失。非常可悲的是,圖表API不會暴露任何縮放或重新渲染事件。在繪製圖表後,只有一次「準備好」事件被觸發。此外,我注意到,我不能計算出我提供給api的yAxis值。如果api決定這些字符串太長,它只會用工具提示渲染它的子字符串。
所以,只有一個笨拙和一個真正的解決方法,我能夠想出。我離開了笨拙的一個,因爲它符合以前的帖子
var chartDiv = document.getElementById ("chart");
chartDiv .addEventListener ("mousewheel", ProcessChart, false);
//take care of "mousewheel" event browser compatibility!!!
function ProcessChart() {
setTimeout(function() {
$("#chart svg text[text-anchor='end']:contains('$C$')").each(function() {
var $this = $(this);
var val = parseInt($this.text());
var label = GetCommunicationLabel(val);
$this.text(label);
});
}, 20);
}
請注意,我用setTimeout函數來處理標籤。該圖表也是在mousewheel事件上呈現的,如果沒有延遲,您將嘗試處理尚不存在的標籤。20毫秒只是實驗值,它取決於您的圖表在鼠標滾輪事件上重新渲染的時間。不幸的是,當舊值被替換時,用戶能夠檢測到閃爍。
我終於找到了真正的解決方案。
vAxes: {
0: {
format: '#%',
ticks: [0, 0.25, 0.5, 0.75, 1]
//minValue: 0,
//maxValue: 1,
//title: batteryText,
},
1: {
ticks: [ { v: 0, f: GetCommunicationLabel(0) },
{ v: 1, f: GetCommunicationLabel(1) },
{ v: 2, f: GetCommunicationLabel(2) },
{ v: 3, f: GetCommunicationLabel(3) },
{ v: 4, f: GetCommunicationLabel(4) }],
// format: "#",
textPosition: 'out'
//minValue: 0,
//maxValue: 3,
//title: communicationText,
}
},