Highmaps:如何检测enableDoubleClickZoomTo的目标?

时间:2015-09-22 18:34:24

标签: javascript jquery highcharts highmaps

我有一张以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'
            }
        }
    }]
});

当我在双击某个州后调试.log event时,我得到一个大型对象,其中包含有关整个图表状态的信息。

如果我单击以选择状态,然后双击以放大它,我从this.getSelectedPoints()获取有关状态的信息 - 但是,期望在之前选择任何内容是不合理的。缩放。在某些地图中,它可能会被完全禁用。我把它包含在这里作为我原本希望从redraw得到的输出类型的演示。计算邮政编码,州名或索引以过滤原始系列是可以接受的。

1 个答案:

答案 0 :(得分: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/