2013-06-01 102 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 
}