2015-09-22 43 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

宾果。非常感谢! –