我基于我的项目的演示是here。
我已经改变了我自己的国家和信息,但这里存在钻井功能的问题。
复制步骤: 在上面的链接中打开jsfiddle并在地图中单击CA(加利福尼亚州),然后单击按钮'<回到美国'
接下来,点击西海岸的其他地方,看看加利福尼亚州的钻取工作是否已从地图中删除。单击后退按钮后,我需要将其删除。
以下是代码的主体:
Highcharts.mapChart('container', {
chart: {
events: {
drilldown: function (e) {
if (!e.seriesOptions) {
var chart = this,
mapKey = 'countries/us/' + e.point.drilldown + '-all',
// Handle error, the timeout is cleared on success
fail = setTimeout(function () {
if (!Highcharts.maps[mapKey]) {
chart.showLoading('<i class="icon-frown"></i> Failed loading ' + e.point.name);
fail = setTimeout(function () {
chart.hideLoading();
}, 1000);
}
}, 3000);
// Show the spinner
chart.showLoading('<i class="icon-spinner icon-spin icon-3x"></i>'); // Font Awesome spinner
// Load the drilldown map
$.getScript('https://code.highcharts.com/mapdata/' + mapKey + '.js', function () {
data = Highcharts.geojson(Highcharts.maps[mapKey]);
// Set a non-random bogus value
$.each(data, function (i) {
this.value = i;
});
// Hide loading and add series
chart.hideLoading();
clearTimeout(fail);
chart.addSeriesAsDrilldown(e.point, {
name: e.point.name,
data: data,
dataLabels: {
enabled: true,
format: '{point.name}'
}
});
});
}
this.setTitle(null, { text: e.point.name });
},
drillup: function () {
this.setTitle(null, { text: 'USA' });
}
}
},
我知道一种方法,这是通过在钻取功能中执行window.history.go(-1),但这会删除缩放图形并在单击后中断按钮。 history.go(-1)不会中断按钮,但单击一次后也无法正常工作。
我在这里发现了类似的问题:Proper way to remove all series data from a highcharts chart?但这会处理条形图,因此代码不同。
此问题的解决方案是更改
for (var i = 0; i < chart.series.length; i++)
到
while(chart.series.length > 0)
chart.series[0].remove(true);
我原本以为不在jsfiddle上保存缓存也可以解决这个问题,但我也无法解决这个问题。
任何帮助都会很棒。感谢。
答案 0 :(得分:1)
这是从5.0.3到5.0.4版本的回归错误。它在最新的开发版本中修复,因此使用5.0.3 /最新的github版本。
<script src="http://github.highcharts.com/master/highmaps.src.js"></script>
<script src="http://code.highcharts.com/maps/modules/data.js"></script>
<script src="http://github.highcharts.com/maps/modules/drilldown.js"></script>
<script src="https://code.highcharts.com/mapdata/countries/us/us-all.js"></script>
<script src="http://code.highcharts.com/maps/5.0.3/highmaps.js"></script>
<script src="http://code.highcharts.com/maps/modules/data.js"></script>
<script src="http://code.highcharts.com/maps/5.0.3/modules/drilldown.js"></script>
<script src="https://code.highcharts.com/mapdata/countries/us/us-all.js"></script>