给出整个D3地图事件监听器

Give Entire D3 Map Event Listener

本文关键字:地图 事件 监听器 D3      更新时间:2023-09-26

我有一张美国地图,上面标着一些特色城市。各州和各城市都有自己的点击事件。点击一个州,就会放大到这个州,并显示该州的更多城市。当点击一个城市时,它会绘制一个新城市,并绘制一条通往新城市的路径,同时放大到只显示两个城市。

而被放大到两个城市,我希望能够点击地图上的任何地方有它重置。如果可能的话,希望能够做到这一点,而无需删除和恢复所有现有的单击事件。

谁知道一种方法,我可以把一个不可见的层在整个SVG与它自己的点击事件?

添加覆盖整个地图的<rect>元素。如果你让它填充="none",它将是不可见的。添加单击事件处理程序,在单击<rect>时执行复位功能。

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