Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 海图:为什么重绘会更改选定点的半径?_Javascript_Highcharts - Fatal编程技术网

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 Only
select
可以在序列数据中设置,因为在创建点(初始化或更新)时,Highcharts代码中仅检查该状态。在重画或修改或破解HeaveScript代码时,您必须重新设置状态:在这个演示中:您的注释可能是一个问题IMO,所以如果您还有什么要添加到这个对话中的话,请考虑打开一个新问题。
chart.get('b').setState('select');
chart.get('b').selected = true;
chart.get('b').options.selected = true;