2013-07-01 79 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