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

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

——

可疑语法列表:

  • V0 > V1
  • .object > .feature
  • .geometries > .features(在某些情况下还是总是?)
  • *.coordinates > *.geometry.coordinates
  • 其他人?
  • 最佳答案

    1.0.0 主要版本(参见 release notes )用 topojson.feature 替换了 topojson.object 函数,以获得更好的 GeoJSON 兼容性。

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

    从版本 1.0.0 开始,topojson.feature 替换了 topojson.object,而是返回一个 Feature 或 FeatureCollection,这与在转换为 TopoJSON 之前几何最初在 GeoJSON 中的表示方式一致。 (与在 GeoJSON 中一样,空几何被表示为具有空几何对象的特征。)如 #37 中所述,这提供了与 GeoJSON specification 和处理 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]);
    });
    

    关于json - Topojson:v0 和 v1 之间的差异列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17404239/

    10-12 04:50