Выбор объектов на основе определенного атрибута в d3 - PullRequest
0 голосов
/ 27 октября 2018

У меня есть карта: 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')

Есть мысли? Заранее спасибо!

...