D3.js 使用矩形选择可缩放贴图顶部的节点。在D3中
[[这是使用D3V5]] D3.zoom()自动将滚轮和鼠标单击映射到缩放地图的操作。我希望能够在地图区域中绘制一个矩形,以选择出现在地图顶部的节点。我需要知道如何为mousedown、mousemove、mouseup添加处理程序,以便跟踪矩形的位置 我尝试了以下方法,但从未调用mousedown回调 如果我删除D3.js 使用矩形选择可缩放贴图顶部的节点。在D3中,d3.js,zooming,geo,D3.js,Zooming,Geo,[[这是使用D3V5]] D3.zoom()自动将滚轮和鼠标单击映射到缩放地图的操作。我希望能够在地图区域中绘制一个矩形,以选择出现在地图顶部的节点。我需要知道如何为mousedown、mousemove、mouseup添加处理程序,以便跟踪矩形的位置 我尝试了以下方法,但从未调用mousedown回调 如果我删除.call(zoom),则会调用mousedown回调,但e是未定义的。我可以使用d3.event访问事件,因此这不是问题 如果在(mouse*',cb)`调用.call(zoom)之
.call(zoom)
,则会调用mousedown回调,但e
是未定义的
。我可以使用d3.event访问事件,因此这不是问题
如果在(mouse*',cb)`调用.call(zoom)
之后移动.call(zoom)
,我会看到鼠标向下移动,但没有鼠标,只有一个鼠标移动
我可以理解先添加鼠标回调,但我不明白为什么其中一些是屏蔽的,而另一些不是。
显然,我需要一些帮助来理解这一点
var zoom = d3.zoom()
.scaleExtent([0.1, 10])
.filter(() => !d3.event.ctrlKey) // Don't zoom/pan when ctrl is pressed
.on("zoom", zoomed)
;
container
.call(zoom)
.on('mousedown.zoomrect', e=>console.log('zoom', e))
.on('mouseup.zoomrect', e=>console.log('zoom up', e))
.on('mousemove.zoomrect', e=>console.log('zoom move', e))
;
在矩形中定位节点是一个单独的问题,但我相信我可以处理投影和变换