给整个D3地图事件监听器

时间:2014-06-25 23:07:26

标签: javascript svg d3.js

我有一张美国地图,其中绘制了一些特色城市。州和城市都有自己的点击事件。单击状态可放大状态并显示州内的更多城市。当点击一个城市时,它会绘制一个新城市并绘制一条通往新城市的路径,同时放大到这两个城市的视野。

在放大两个城市时,我希望能够点击地图上的任意位置重置它。希望能够在不删除和恢复所有现有点击事件的情况下执行此操作。

任何人都知道我可以通过它自己的点击事件在整个SVG上放置一个不可见的图层吗?

1 个答案:

答案 0 :(得分:1)

添加涵盖整个地图的<rect>元素。如果你使它填充=“无”它将是不可见的。单击<rect>时,添加单击事件处理程序以执行重置功能。<​​/ p>

然后,您可以操作pointer-events属性以使其捕获或不捕获事件。设置pointer-events =“all”将使其捕获事件,而pointer-events =“none”将使其通过事件。只需根据地图是否缩放来切换属性。