Javascript 海图:为什么重绘会更改选定点的半径?
我有一个相似但不同的问题要解决 这与Javascript 海图:为什么重绘会更改选定点的半径?,javascript,highcharts,Javascript,Highcharts,我有一个相似但不同的问题要解决 这与重绘事件后点的渲染有关,而不是鼠标悬停事件 我在散点图中设置了一个特定点,使其处于“选择”状态: var chart = new Highcharts.Chart(options); chart.get('b').setState('select'); 我还在图表选项中定义了select状态,如下所示: select: { radius: 8, enabled: true, lineColor: 'red', fillColor:
重绘
事件后点的渲染有关,而不是鼠标悬停
事件
我在散点图中设置了一个特定点,使其处于“选择”状态:
var chart = new Highcharts.Chart(options);
chart.get('b').setState('select');
我还在图表选项中定义了select
状态,如下所示:
select: {
radius: 8,
enabled: true,
lineColor: 'red',
fillColor: 'red'
}
该点为红色,半径为8,如图所示:
但是,当我在图表上运行重画
时,颜色保持不变(因此,选择
状态仍然清晰地保持在点上,即),但半径减小
为什么??我如何才能在这一点上将半径设置为8?我最终通过以下方法解决了这个问题:
point.select(true, true);
而不是
point.setState('select');
后者没有文件记录,而前者似乎是官方的做事方式 这是因为point.setState('select')与point.select(true)不同 正如您所指出的,select()是API的一部分,它正在工作- 事实上,point.select()代码的一部分是point.setState('select'),但它也将point的属性-'selected'设置为true,并将point.options.selected设置为true
select: function (selected, accumulate) {
var point = this,
series = point.series,
chart = series.chart;
selected = pick(selected, !point.selected);
// fire the event with the defalut handler
point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
point.selected = point.options.selected = selected;
series.options.data[inArray(point, series.data)] = point.options;
point.setState(selected && SELECT_STATE);
// unselect all other points unless Ctrl or Cmd + click
if (!accumulate) {
each(chart.getSelectedPoints(), function (loopPoint) {
if (loopPoint.selected && loopPoint !== point) {
loopPoint.selected = loopPoint.options.selected = false;
series.options.data[inArray(loopPoint, series.data)] = loopPoint.options;
loopPoint.setState(NORMAL_STATE);
loopPoint.firePointEvent('unselect');
}
});
}
});
},
知道了这一点,就可以调用point.setState('select'),具有相同的效果-
我已经更新了问题,以表明它不是重复的。真的不清楚为什么我的答案被删除而没有任何解释。这对其他人在谷歌上搜索同样的东西不是很有帮助吗?我添加答案只是因为我想帮助别人!如前所述,这不是一个重复的问题。我使用StackOverflow是因为它对每个人都很有用:积极地标记非重复项和重复项,删除答案,会使网站变得更糟。我同意这在技术上不是重复项,尽管我必须仔细阅读才能发现事实并非如此(即使如此,我认为这也值得讨论)。我投票决定重新开张。我认为最好是将你的最新编辑回滚,或者至少更改你的评论,以解释“这个问题与另一个问题有何不同”(而不是对这个过程发表意见,最好留给评论或元帖子)。谢谢。我已经编辑了(第三次)以明确它不是重复的。嗨,我有与OP相同的问题,除了在重画后尝试使用
非活动
状态,而不是选择
状态。我知道我正在成功地将状态设置为非活动
,但是我为该状态设置的样式/属性在重画后不会反映出来。对于非活动
状态是否有类似的解决方案?@JakeZeitz Onlyselect
可以在序列数据中设置,因为在创建点(初始化或更新)时,Highcharts代码中仅检查该状态。在重画或修改或破解HeaveScript代码时,您必须重新设置状态:在这个演示中:您的注释可能是一个问题IMO,所以如果您还有什么要添加到这个对话中的话,请考虑打开一个新问题。
chart.get('b').setState('select');
chart.get('b').selected = true;
chart.get('b').options.selected = true;