3

我正在合并代码,依赖 v0 的代码在 v1 上中断。

topojson.v0.min.js 和 topojson.v1.min.js 之间的语法变化是什么?*

--

可疑语法列表:

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

1 回答 1

9

1.0.0 主要版本(请参阅发行说明)将 topojson.object 函数替换为 topojson.feature 以获得更好的 GeoJSON 兼容性。

在之前的 TopoJSON 版本中,topojson.object 返回一个几何对象(可能是一个几何集合),这与几何对象在 TopoJSON拓扑中的表示方式一致。然而,与 GeoJSON 几何不同,TopoJSON 几何更像特征,并且可以具有 id 和属性;同样,空几何被表示为空类型。

从 1.0.0 版开始,topojson.feature替换了 topojson.object,而是返回一个 Feature 或一个 FeatureCollection,这与转换为 TopoJSON 之前几何在 GeoJSON 中的最初表示方式一致。(在 GeoJSON 中,空几何表示为具有空几何对象的特征。)如#37中所述,这提供了与GeoJSON 规范和处理 GeoJSON 的库的更大兼容性。

要升级您的代码,您可以将 topojson.object 替换为 topojson.feature。但是,必须更改假定 topojson.object 返回几何的代码以处理现在由 topojson.feature 返回的特征(或特征集合)。比如在 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]);
});
于 2013-07-08T21:30:54.047 回答