1

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

event当我在双击一个状态后console.log 时,我得到一个包含整个图表状态信息的大对象。

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

4

1 回答 1

1

我认为通过 wrapping 检测该点的最简单方法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/

于 2015-09-23T10:20:39.437 回答