我建立了一个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高亮显示相应的状态而不是隐藏它们,那也将起作用。提前非常感谢!
为了防止隐藏状态,您可以覆盖setItemEvents
方法:
(function(H) {
H.Legend.prototype.setItemEvents = null;
})(Highcharts)
实时演示: https://jsfiddle.net/BlackLabel/usaveL4w/
文档: https://www.highcharts.com/docs/extending-highcharts/extending-highcharts