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