У меня есть карта: 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')
У меня есть временной фильтр, который делает некоторые объекты невидимыми, если я не хочу, чтобы они были видны на карте (код здесь не показан). Я делаю это, устанавливая непрозрачность этих функций на ноль.
Проблема в том, что я хочу, чтобы всплывающие окна отображались только для видимых объектов карты при наведении мыши. В настоящее время функции с непрозрачностью, установленной на ноль, все еще могут быть активированы при наведении курсора мыши. Итак, я хочу выбрать только те объекты, у которых в настоящее время непрозрачность установлена на 0,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")
})
Я также пытался добавить атрибут "classed" и выбирать на его основе. Хотя я могу заставить атрибут classed обновляться успешно, при наведении курсора ничего не происходит.
//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')
Есть мысли? Заранее спасибо!