我正在合并代码,依赖 v0 的代码在 v1 上中断。
topojson.v0.min.js 和 topojson.v1.min.js 之间的语法变化是什么?*
——
可疑语法列表:
最佳答案
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/