javascript - 在 d3 map 中选择多个路径元素

标签 javascript d3.js

我有一张世界地图,其中有不同的国家作为路径元素。每个国家都属于一个集群,这是一个包含国家名称的对象。这些名称对应于各个要素的 geojson 属性中的名称。单击一个国家时,我想更改该国家所属的整个集群的样式。

我可以突出显示被点击的节点,因为它是像这样传入事件处理程序的:

    svg.selectAll("path").data(json.features).enter().append("path")
    .attr("d", path)
    .style("fill", function(d) {
        var value = d.properties.value;
        var size = d.properties.size;
        if (value) {
            var hsv = hsvToRgb((value / moreThanOne) *0.66, 1, 0.1 + (size / maxSize) * 0.9);
            if (size == 1)  return "#000000";
            else return "rgba(" + Math.floor(hsv[0]) + "," + Math.floor(hsv[1]) + "," + Math.floor(hsv[2]) + ",255)";
        } else return "#999999";
    }).on("click", function(d) {
        var name = d.properties.name;
        var value = d.properties.value;
        hilite(value, this);
    })

这里是高亮功能:

function hilite(cluster, node) { //highlights the single clicked node
d3.select(node).style("stroke", "#ff0000");
//clustermap is the object holding the clusters data
Object.keys(clusterMap[cluster]).forEach(function(key) {
    svg.selectAll("svg").data().each(function(d) {
        if (d.properties.name.toLowerCase() == key.replace(".gif", "").toLowerCase()) {
            //if it matches, style ... but how?
            console.log(d.properties.name.toLowerCase() + " " + key.replace(".gif", "").toLowerCase());
        }
    });
});

}

如何按名称选择所有节点并为其应用样式?我是 d3 的新手,所以我想一定有一种简单的方法可以做到这一点,但我想不通。

谢谢!

最佳答案

您可以使用 .filter() 来执行此操作,假设要比较 clusterd.properties.name:

d3.selectAll("path").filter(function(d) {
  return d.properties.name == cluster;
}).style("stroke", "#f00");

关于javascript - 在 d3 map 中选择多个路径元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21020441/

相关文章:

browser - D3.JS 浏览器支持

javascript - POSTing 数据后显示动态创建的 php 图像

javascript - var functionName = function() {} vs function functionName() {}

javascript - D3.js - 删除除一个之外的其他栏

javascript - 可点击图表数据点以打开新页面

javascript - D3js 与 json 错误

javascript - 如果有任何方法可以更改 javascript 警报消息窗口的设计和位置

javascript - JQUERY + PHP + AJAX 不起作用

javascript - JS中的 "and `有什么区别?

html - 拖动旋转 SVG :g group