Topojson:v0和v1之间的差异列表是什么?

3

我正在合并代码,依赖于v0的代码在v1上会出错。

topojson.v0.min.js和topojson.v1.min.js之间的语法变化有哪些?*

--

可疑语法列表:

  • V0 > V1
  • .object > .feature
  • .geometries > .features(在某些情况下或总是?)
  • *.coordinates > *.geometry.coordinates
  • 其他?
1个回答

9
1.0.0主要版本发布(详见发布说明),用topojson.feature替换了topojson.object函数,以更好地兼容GeoJSON。
在之前的TopoJSON版本中,topojson.object返回一个几何对象(可能是几何集合),与TopoJSON 拓扑结构内部表示几何对象的方式一致。然而,与GeoJSON几何类型不同,TopoJSON几何类型更像特征,并且可以有一个id和属性;同样,空几何体被表示为null类型。
从版本1.0.0开始,topojson.feature替换了topojson.object,返回一个Feature或FeatureCollection,与几何图形在转换为TopoJSON之前在GeoJSON中的原始表示方式一致(与GeoJSON一样,空几何图形被表示为具有空几何对象的要素)。如#37所讨论的那样,这提供了更好的与GeoJSON规范和处理GeoJSON的库的兼容性。
要升级您的代码,您可以用topojson.feature代替topojson.object。但是,现在由topojson.feature返回的是feature(或feature collection),而不是以前假定topojson.object返回几何图形的代码必须进行更改以处理该要素。例如,在1.0之前,如果您说:
svg.selectAll("path")
    .data(topojson.object(topology, topology.objects.states).geometries)
  .enter().append("path")
    .attr("d", path);

在1.0及以后版本中,相应的代码为:
svg.selectAll("path")
    .data(topojson.feature(topology, topology.objects.states).features)
  .enter().append("path")
    .attr("d", path);

同样地,如果您在1.0之前遍历点几何数组,您可能会这样说:
topojson.object(topology, topology.objects.points).geometries.forEach(function(point) {
  console.log("x, y", point.coordinates[0], point.coordinates[1]);
});

在1.0及以后版本,相应的代码为:

topojson.feature(topology, topology.objects.points).features.forEach(function(point) {
  console.log("x, y", point.geometry.coordinates[0], point.geometry.coordinates[1]);
});

谢谢!正是我们需要的。 - Robin Kraft
@RobinKraft:如果你找到了一些可以替换的对,请将它们添加到问题内部的列表中。 - Hugolpz

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