Этот хак работает до тех пор, пока Google не изменит api в будущем. Также он работает, пока вы не используете экспериментальную опцию «explorer». Если вы используете масштабирование, тогда диаграмма повторно отображается на каждом событии мыши и ваши значения исчезают. Очень печально то, что диаграмма api не подвергает ни масштабированию, ни повторному отображению событий. Существует только «готовое» событие, которое запускается только один раз после рисования графика. Кроме того, я заметил, что не могу рассчитывать, что значения yAxis отображаются, когда я предоставил их api. Если 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,
}
},