2015-07-04 2 views
0

У меня возникают некоторые проблемы, связанные с событиями Touch в HighCharts. Я могу получать события, но мне не удалось выяснить, как перевести координаты, заданные в координаты диаграммы. Для событий мыши, можно использовать следующие для получения значения диаграммы X:Извлечение координат диаграммы из событий касания для пользовательского взаимодействия HighCharts

chart.xAxis[0].toValue(e.offsetX) 

Однако потрогать события не имеют offsetX. Для кликов также есть e.originalEvent.chartX, который, кажется, идентичен e.offsetX, но опять же он отсутствует для событий касания. Проверяя событие касания, я могу найти clientX, screenX и pageX, но axis.toValue не возвращает правильную диаграмму X для любого из этих значений.

touch event support in highchart for iphone/ipads or any touchable devices и Highcharts: how to handle touch events via plotOptions.series.events как говорится, используя «трекер» объект для вызова normalizeMouseEvent, но я не могу найти его в ссылке API или путем проверки соответствующих объектов.

Как я могу извлечь правильные значения диаграммы X и Y из события касания?

ответ

0

Вы можете извлечь это из объекта changedTouches.

e.originalEvent.changedTouches[0].pageX 
e.originalEvent.changedTouches[0].pageY 
0

Для того, чтобы извлечь эквивалент event.offsetX, что я использую для событий мыши, я в конечном итоге, используя следующий код:

function accumulate_offset(next_container) { 
    offset = 0; 
    while (next_container != null) { 
    offset += next_container.offsetLeft; 
    next_container = next_container.offsetParent; 
    } 
    return offset; 
} 

// then in handler 
if (e.type.slice(0,5) == 'mouse') { 
    xVal = e.offsetX; 
} else { 
    xVal = e.originalEvent.changedTouches[0].pageX - accumulate_offset(e.currentTarget); 
} 
x = axis.toValue(xVal); 

Надеется, что это полезно для кого-то.

Смежные вопросы