topojson V1中的topojson.object

11

我很喜欢使用topojson玩耍,但是在topojson的V1版本中,topojson.object变量未定义。然而,在V0版本中支持该变量。有人能解释一下我应该如何解决这个问题吗?我尝试为格式化为topojson的输入文件中的每个多边形绘制不同的路径元素。代码如下:

d3.json("maTopo.json", function(error, ma) {
    svg.selectAll(".subunit")
      .data(topojson.object(ma, ma.objects.ma).geometries)
    .enter().append("path")
      .attr("class", function(d) { return "subunit " + d.id; })
      .attr("d", path);
});

请参见 https://dev59.com/_3PYa4cB1Zd3GeqPpPIo。 - Hugolpz
2个回答

17

你可以使用topojson.feature替代。

d3.json("maTopo.json", function(error, ma) {
  svg.selectAll(".subunit")
      .data(topojson.feature(ma, ma.objects.ma).features)
    .enter().append("path")
      .attr("class", function(d) { return "subunit " + d.id; })
      .attr("d", path);
});

这里可以找到一个详细的例子:http://bost.ocks.org/mike/map/


4
“v1版本的更新将topojson.object替换为topojson.feature;虽然行为类似,但新的topojson.feature方法返回Feature或FeatureCollection(而不是Geometry或GeometryCollection),以更好地与GeoJSON兼容。”
“@mbostock在this thread中说。所以只需更改代码中的一个字符串:.data(topojson.feature(ma, ma.objects.ma).features)。我想你还应该使用v1从GeoJSON重新生成你的TopoJSON文件。”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接