2013-06-01 89 views
3

我想在两个GeoJSON对象之间转换,但一直无法找到关于如何包含多个GeoJSON文件的任何信息。我对最终的转换感到满意,但在多个GeoJSON文件中找不到任何东西。D3.js多个GeoJSON对象

我现在可以绘制一张地图,像这样:

d3.json("goldatt2.json", function (data) { 

    var group = canvas.selectAll("g") 
     .data(data.features) 
     .enter() 
     .append("g") 

    var path = d3.geo.path().projection(d3.geo.equirectangular()); 

    var areas = group.append("path") 
     .attr("d", path) 

我将如何改变这种做法,两个GeoJSON的文件被调用,可以转化?

我发现这个例子,http://bl.ocks.org/mbostock/3081153但在这个例子中,只有GeoJSON对象,然后转换为一个圆。

+0

对于第二GeoJSON的,图案几乎相同,不同之处在于需要处理的更新选择为好。也就是说,将路径从第一个路径转换为第二个路径。就加载GeoJSON而言,您可以完全一样。 –

回答

0

获取数据是转换它的单独任务。

所以,你可以在理论上有多个Ajax调用来获取你需要的数据之前你决定用这些数据做任何事情

Mike Bostock为此目的实施了Queue。 如果您在D3中使用JQuery,则可以查看Deferred,其中的一个示例发布为here

一旦您拥有了所需的数据集,您现在可以决定如何转换数据或提供它们之间的转换。

伪代码:

var files = ["file1.json", "file2.json"]; 

//Fetch Data for both files and create a data set object of this format 
var dataset = { 
    "file1.json": {/*geojson data for file1*/}, 
    "file2.json": {/*geojson data for file2*/} 
} 

for(var item in dataset) { 
    var data = dataset[item]; 
    //Do whatever transformation you need 
}