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

Android Highcharts:拦截树形图点击事件并获取点击节点ID

解决Highcharts Treemap点击拦截并获取节点ID的问题

首先修正你代码里的拼写错误:allowTraversing.ççTree(true) 是输入失误,正确写法为 setAllowTraversingTree(true)。下面是完整的可运行配置,重点解决点击事件的HIFunction定义问题:

完整代码示例

HIPlotOptions plotOptions = new HIPlotOptions();
HITreemap myTreemap = new HITreemap();

// 配置Treemap交互规则,禁用默认钻取触发逻辑
myTreemap.setInteractByLeaf(false);
myTreemap.setAllowTraversingTree(true);
myTreemap.setLevelIsConstant(false);

// 定义点击事件处理函数
HIFunction clickHandler = new HIFunction(
    // JavaScript执行逻辑
    "function(event) {" +
        // 阻止默认钻取行为
        "event.preventDefault();" +
        // 获取当前点击节点的完整数据
        "var node = this.point.options;" +
        // 提取节点ID(需确保数据中已定义id字段)
        "var nodeId = node.id;" +
        // 这里可根据需求处理ID,比如打印调试、发送到后端等
        "console.log('选中节点ID:' + nodeId);" +
        // 示例:通过fetch发送ID到后端接口
        // fetch('/api/handle-node-click', {" +
        //     "method: 'POST'," +
        //     "headers: { 'Content-Type': 'application/json' }," +
        //     "body: JSON.stringify({ nodeId: nodeId })" +
        // "});" +
    "}",
    // 函数接收的参数列表
    new String[]{"event"}
);

// 绑定点击事件到Treemap
myTreemap.setEvents(new HIEvents().setClick(clickHandler));
plotOptions.setTreemap(myTreemap);

核心逻辑说明

  • 阻止默认钻取:调用event.preventDefault()直接中断Treemap默认的钻取行为,确保点击只触发自定义逻辑。
  • 获取节点ID:this.point.options包含了节点的所有原始配置数据,只要你在构建Treemap数据时给每个节点设置了id字段,就能通过node.id提取到目标ID。
  • HIFunction配置:第一个参数是要执行的JavaScript代码字符串,第二个参数是函数的入参数组,这里我们只需要传入event即可获取点击事件对象。

前置要求

确保你的Treemap数据节点中已定义id字段,示例数据构建代码:

HIData nodeData = new HIData();
nodeData.setId("product-001");
nodeData.setName("产品A");
nodeData.setValue(100);
// 关联子节点等其他配置...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:13:08