我有一张地图:在传单地图上放置了d3个矢量(圆圈)。
// read in data, draw circles in d3, and append to Leaflet map
var feature = mapG.selectAll("circle")
.data(SFData)
.enter().append("circle")
.style("stroke", "black")
.style("fill", function(d) { return type(d.properties.Tenant)})
.attr("r", function(d) { return radius(d.properties.Lease_Size)})
.attr("class", 'features')
我有一个时间过滤器,如果我不希望某些特征在地图上可见,它会使某些特征不可见(代码未在此处显示)。我这样做的方法是将这些功能的不透明度设置为零。
问题是我希望弹出窗口仅在鼠标悬停时显示可见的地图特征。目前,将不透明度设置为零的功能仍然可以通过鼠标悬停来激活,这将事情搞砸了。因此,我只想选择当前将不透明度设置为.7的要素(时间滑块将动态更改不透明度)。
这似乎不起作用:
// select d3 features of the class 'features', that have attribute opacity = .7
d3.selectAll('.features[style = "opacity: .7;"]')
.on("mouseover", function(d) {
console.log(" do something here")
})
我还尝试添加“分类”属性,然后基于该属性进行选择。虽然我可以使分类属性成功更新,但是鼠标悬停不会发生任何事情。
//build function to change attribute 'classed'
function ClassMatch(data, value) {
if (year <= inputValue) {
return "Visible";
} else {
return "invisible";
};
}
// pass in a function which assigns 'classed' attribute based on function
var feature = mapG.selectAll("circle")
.data(SFData)
.enter().append("circle")
.attr("classed", ClassMatch)
// select on classed attr
d3.selectAll('.Visible')
有什么想法吗?提前致谢!