Вы можете просто визуализировать элемент rect
, используя класс Highcharts.SVGRenderer
, а затем обрабатывать соответствующие события, чтобы изменить положение линии при перетаскивании.Все должно быть в состоянии достичь на chart.events.load
обработчик.Вот пример кода:
load() {
var chart = this,
lineWidth = 2,
draggablePlotLine = chart.renderer.rect(100, chart.plotTop, lineWidth, chart.plotHeight)
.attr({
fill: 'blue'
})
.add();
chart.container.onmousemove = function(e) {
if (draggablePlotLine.drag) {
let normalizedEvent = chart.pointer.normalize(e),
extremes = {
left: chart.plotLeft,
right: chart.plotLeft + chart.plotWidth
};
// Move line
if (
e.chartX >= extremes.left &&
e.chartX <= extremes.right
) {
draggablePlotLine.attr({
x: e.chartX
})
}
}
}
draggablePlotLine.element.onmousedown = function() {
draggablePlotLine.drag = true
}
draggablePlotLine.element.onmouseup = function() {
draggablePlotLine.drag = false
}
}
Живой экзамен: https://jsfiddle.net/Lnj7ac42/
Справочник по API: https://api.highcharts.com/class-reference/Highcharts.SVGRenderer