You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LightningChart鼠标移动获取X值问题:系列区域无响应

解决LightningChart全区域鼠标移动获取X轴数值的问题

问题核心是onSeriesBackgroundMouseMove仅响应图表空白区域的鼠标事件,折线系列会拦截鼠标事件,导致系列上的移动无法触发该回调。要实现全区域监听,需要同时给图表背景和所有折线系列添加鼠标移动监听,并复用同一套坐标转换逻辑。

实现步骤

  • 提取通用的坐标转换与X轴数值获取函数,避免重复代码
  • 给图表背景绑定原有的鼠标移动监听
  • 遍历所有折线系列,给每个系列绑定onMouseMove监听,调用同一处理函数

完整代码示例

// 通用处理函数:根据鼠标位置获取X轴数值
const handleMouseMove = (chart, ev) => {
    const point = chart.engine.clientLocation2Engine(ev.clientX, ev.clientY)
    const axisX = chart.getDefaultAxisX()
    const axisY = chart.getDefaultAxisY()
    const onScale = translatePoint(point, chart.engine.scale, {x: axisX, y: axisY})
    // 输出X轴数值,这里可以替换成你的业务逻辑
    console.log('当前X轴数值:', onScale.x)
}

// 给图表背景添加监听
chart[key].onSeriesBackgroundMouseMove((obj, ev) => {
    handleMouseMove(obj, ev)
})

// 遍历所有折线系列,添加鼠标移动监听
// 假设你的折线系列都存储在一个数组里,比如lineSeriesArray
lineSeriesArray.forEach(series => {
    series.onMouseMove((seriesObj, ev) => {
        // 这里的seriesObj所属的图表就是chart[key],直接传入即可
        handleMouseMove(chart[key], ev)
    })
})

关键说明

  • translatePoint函数会将引擎坐标转换为对应轴的刻度值,不管鼠标在背景还是系列上,转换逻辑完全一致
  • 折线系列的onMouseMove事件参数中,ev同样包含clientX和clientY,可以直接复用坐标转换逻辑
  • 如果是动态添加的折线系列,需要在创建系列后立即绑定onMouseMove监听

内容的提问来源于stack exchange,提问作者Gracie williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:00:12