【发布时间】:2017-11-21 09:19:51
【问题描述】:
我使用 d3.js 在 GeoMap 中创建了弹出功能。以下部分代码将特定节点显示为一个圆圈,当我将鼠标移到圆圈上时,它将显示一个弹出窗口。
g2.selectAll(".details")
.data(d3.entries(json1))
.enter()
.append("circle")
.attr("r",0.5)
.attr("transform",function(d) { return "translate("+ projection([
d.value.lon,
d.value.lat
]) + ')'; })
.attr("fill","white")
.attr("stroke","steelblue")
.on("mouseover", function(d) {
div.transition()
.duration(500)
.style("opacity", .9);
div .html(
'<a href= "' + d.value.url + '">' + //with a link
d.value.name +"</a>" + "<br/>" + d.value.status)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY - 30) + "px");
})
如您所见,鼠标悬停功能正在发挥作用。但是当我放大或拖动地图时,它会存在一些这样的错误:
你可以看到弹出窗口总是在同一个位置(我相信原因是位置是特定的,当我拖动地图时不会动态改变)。
现在,我想知道,如何创建 mouseout 功能,以便在我将鼠标放在圆圈(节点)外时删除弹出窗口?
或者有什么方法可以修复鼠标悬停功能中的错误?
感谢您的帮助。
【问题讨论】:
标签: javascript d3.js popup