【发布时间】:2017-09-13 23:30:20
【问题描述】:
所以我使用 D3.js 的 Topojson 功能来创建 svg 世界地图。尽管对 d3 来说相对较新,但到目前为止,我已经成功地弄清楚了规模和一切。我遇到的问题是尝试将 topojson 文件中的数据与我定义的一些集合合并或过滤。我将省略用于投影的函数。到目前为止,这是我所拥有的:
var svg = d3.select("#map svg");
var regions = [
{
region: 'low',
set: d3.set([ "USA", "CAN" ])
},
{
region: 'med',
set: d3.set([ "AUS" ])
},
{
region: 'high',
set: d3.set([ "RUS" ])
}
];
d3.json("site/js/topo.json", function(error, topology) {
// INDIVIDUAL COUNTRIES
svg.selectAll("path")
.data(topojson.feature(topology, topology.objects.worldByIso).features)
.enter()
.append("path")
.attr("data-iso", function(d){
return d.properties.iso;
})
.attr("d", path);
});
我能够将 d.properties.iso 值从 topojson 文件返回到数据属性,但我真正想做的是对照“区域”数组检查该 iso 属性以返回区域(低、中或高)如果它与集合匹配。
理想情况下,该解决方案不需要每次都循环通过“区域”进行检查,因此可以快速处理它。希望这一切都有意义,我正在写这篇文章,因为我加班了!
【问题讨论】:
标签: javascript d3.js topojson