2016-11-29 9 views
0

Демо-версия Я основываю свой проект на here.Проблема с высокими диаграммами на jsfiddle, где серия не удаляется на развертке

Я изменил это для своей страны и информации, но проблема существует для функции сверления.

Размножение шаги: Откройте jsfiddle в ссылке выше и нажмите на CA (Калифорния) на карте, затем нажмите кнопку «< Назад к США»

Далее нажмите где-нибудь еще на западном побережье, чтобы увидеть что сверление калифорнии не было удалено с карты. Мне нужно, чтобы они были удалены после нажатия кнопки «Назад».

issue with old map showing outside selection

Вот основная часть кода:

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 может решить эту проблему тоже, но я не мог получить, что работать либо.

Любая помощь будет отличной. Благодарю.

ответ

1

Это ошибка регрессии от версии 5.0.3 до 5.0.4. Он исправлен в последней версии разработки, поэтому используйте версию 5.0.3/last 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> 

http://jsfiddle.net/dsjLp3h1/

<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> 

http://jsfiddle.net/dsjLp3h1/1/