Highmaps:当colorAxis中有dataClasss时,legendItemClick不起作用,有人可以解决吗?

问题描述 投票:0回答:1

我建立了一个Highmaps地图,其中各州根据其排名着色。我是这样设置的:

             colorAxis: {
                        min: 0,
                        maxColor: 'blue',

             dataClasses: [{
                   from:0,
                    to: 3.000,
                    color:'#6497b1'
                }, {
                    from: 3.001,
                    to: 4.500, 
                     color:'#005b96'
                }, {
                    from: 4.510,
                    to: 7.000,
                     color:'#03396c'
                }, {
                    from: 7.001,
                    to: 10.000,
                    color:'#011f4b'
                }]
                    },

         legend: {
                title: {
                    text: 'Desarrollo democratico',
                    style: {
                        color: ( // theme
                            Highcharts.defaultOptions &&
                            Highcharts.defaultOptions.legend &&
                            Highcharts.defaultOptions.legend.title &&
                            Highcharts.defaultOptions.legend.title.style &&
                            Highcharts.defaultOptions.legend.title.style.color
                        ) || 'black'
                    }
                },
                align: 'left',
                verticalAlign: 'bottom',
                floating: true,
                layout: 'vertical',
                valueDecimals: 3,
                symbolRadius: 5,
                symbolHeight: 14
            },  

它按预期工作。但是,我想禁用默认行为,即当您单击图例类别时,它将在地图中隐藏相应的状态。通常,这可以通过将legendItemClick添加到plotOptions并将其设置为返回false来完成,如下所示:

        plotOptions: { //For point links
            series: {
              events: {
                legendItemClick: function (e) {
                    return false;
                }
            }
        },   

但是,经过数小时的研究,发现有一个已知的HighCharts错误,当colorAxis对象中存在dataClass时,它会阻止legendItemClick起作用:https://github.com/highcharts/highcharts/issues/9246

论坛上的上一个链接有一个解决方法,但是我没有运气让它起作用。有没有人对此有解决方案?

这里是说明问题的JSFiddle:https://jsfiddle.net/sstoker/3cdaqkyx/

或者,如果有人知道如何使legendItemClick高亮显示相应的状态而不是隐藏它们,那也将起作用。提前非常感谢!

javascript jquery highcharts
1个回答
0
投票

为了防止隐藏状态,您可以覆盖setItemEvents方法:

(function(H) {
    H.Legend.prototype.setItemEvents = null;
})(Highcharts)

实时演示: https://jsfiddle.net/BlackLabel/usaveL4w/

文档: https://www.highcharts.com/docs/extending-highcharts/extending-highcharts

© www.soinside.com 2019 - 2024. All rights reserved.