Highmaps: как определить цель enableDoubleClickZoomTo?

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

Вот небольшая часть проблемы: 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. Допустимо вычисление почтового индекса, названия штата или индекса для фильтрации исходной серии.


person TJ Nicolaides    schedule 22.09.2015    source источник


Ответы (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/

person Paweł Fus    schedule 23.09.2015
comment
бинго. Огромное спасибо! - person TJ Nicolaides; 23.09.2015