2015-09-22 2 views
1

У меня есть карта Соединенных Штатов Америки, сделанная в Highmaps, с enableDoubleClickZoomTo установлена ​​в true. Я застрял, пытаясь понять, в каком состоянии пользователь дважды щелкнул, чтобы увеличить карту, и подумал, есть ли информация, похожая на событие redraw, которое поможет мне рассчитать это.Highmaps: как определить цель enableDoubleClickZoomTo?

Вот скрипка выпуска: http://jsfiddle.net/tjnicolaides/x8q1d1cs/

$('#container').highcharts('Map', { 
    chart: { 
     events: { 
      redraw: function (event) { 
       console.log(event); 
       console.log(this.getSelectedPoints()); 
      } 
     } 
    }, 

    mapNavigation: { 
     enabled: true, 
     enableDoubleClickZoomTo: true 
    }, 

    series: [{ 
     data: data, 
     mapData: Highcharts.maps['countries/us/us-all'], 
     joinBy: 'hc-key', 
     allowPointSelect: true, 
     states: { 
      hover: { 
       color: '#BADA55' 
      }, 
      select: { 
       color: 'purple' 
      } 
     } 
    }] 
}); 

Когда я console.log event после двойного щелчка на состояние, я получаю большой объект с информацией о состоянии всей диаграммы.

Если я нажму, чтобы выбрать состояние, а затем дважды щелкните, чтобы увеличить его, я получаю информацию о состоянии от this.getSelectedPoints(). Однако не стоит ожидать, что что-либо будет выбрано до масштабирования. На некоторых картах он вообще может быть отключен. Я включил его здесь в качестве демонстрации типа вывода, который я изначально надеялся получить от redraw. Вычисление почтового кода, имени штата или индекса для фильтрации исходной серии будет приемлемым.

ответ

1

Я думаю, что самый простой способ, чтобы обнаружить, что точка, обернув Pointer.onContainerDblClick, как это:

(function (H) { 
    H.wrap(H.Pointer.prototype, "onContainerDblClick", function (p, event) { 
     console.log(this.chart.hoverPoint); // hovered point - may not exist, e.g. when clicking on the blank space 
     p.call(this, event); 
    }); 
})(Highcharts) 

И жить демо: http://jsfiddle.net/x8q1d1cs/8/

+0

лото. Спасибо! –

Смежные вопросы