2013-07-01 54 views
3

我正在合并代码,依靠v0的代码在v1上打破。Topojson:v0和v1之间的差异列表?

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

-

嫌疑语法的列表:

  • V0> V1
  • .object> .feature
  • .geometries> .featur es(在某些情况下还是始终?)
  • * .coordinates> * .geometry.coordinates
  • others?

回答

9

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,与GeoJSON中最初表示几何图形的方式一致,然后转换为TopoJSON。 (如在GeoJSON中,空几何被表示为具有空几何对象的特征)。如在#37中讨论的,这提供了与处理GeoJSON的GeoJSON specification和库的更大的兼容性。

要升级您的代码,可以使用topojson.feature替换topojson.object。但是,假定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]); 
}); 
+0

谢谢!正是我们需要的。 –

+0

@RobinKraft:如果您发现一些要替换的对,请将它们添加到问题中的列表中。 – Hugolpz