javascript - 根据 d3.js 中的 JSON 属性选择特定的 svg 路径
问题描述
是否可以仅选择使用 D3 从 geoJSON 文件创建的 SVG 路径之一?在我的情况下,路径是地图中的区域。用户可以从下拉列表中选择一个区域。我想使用此列表中的选定值来选择具有匹配属性的路径并为其着色。区域名称是 geoJSON 文件中的属性之一。
我可以d3.select("path")
通过添加某种过滤器来进一步限定吗?
这就是代码的样子......
d3.json(polygonFile, function(json) {
for (var g = 0; g < json.features.length; g++) {
if(json.features[g].properties.NAME == selectedAreaName) {
d3.select("path") //THIS IS WHERE I NEED TO ADD THE FILTER ...
.transition()
.duration(600)
.style("filter", "brightness(0.7)")
}
}
});
解决方案
有两种方法可以解决您的问题:
您可以d3.selectAll
根据路径的数据/特定属性使用和过滤路径。
d3.selectAll("path").filter((d) => d.uniqueId === 12345)
你甚至可以使用选择器代替函数:
d3.selectAll("path").filter(".className")
如果有很多路径您不想使用过滤器,因为它会在返回正确路径之前遍历所有路径,因此您可以设置 id 属性并使用d3.select('#yourpathid')
希望能帮助到你!
推荐阅读
- android - 字符串到小数点后 2 位
- python-3.x - 如何处理“AttributeError:'_tkinter.tkapp'对象没有属性'messagebox'”?
- java - 调用静态方法时如何指定泛型类型?
- jquery - 多选下拉选择2个选定项目之间的项目
- c++ - 错误 LNK2019:未解析的外部符号,来自外部库的函数 | Qt | qmake
- mongodb - DNSHostNotFound: Failed to look up service "": 此操作返回,因为超时时间已过
- ios - wkwebview中的条带打开浏览器页面加载脚本
- node.js - 带有时区和节能灯的nodejs时间表
- mongoose - 如何根据 2 个字段从猫鼬模型中获取不同的值?
- r - 完成创建R函数后;通过使用此函数和小插图中的样本值来证明更正。错误说“未使用的参数(...)”