2013-05-30 43 views
0

我正在嘗試從美國製作地圖。一旦顯示與它的地圖上指出邊界我想在點擊 顯示縣界我這是怎麼顯示在地圖:使用D3.js加載地圖上的詳細信息

var width = 960, 
    height = 500, 
    centered; 

var path = d3.geo.path(); 

var svg = d3.select("body").append("svg") 
    .attr("width", width) 
    .attr("height", height); 

svg.append("rect") 
    .attr("class", "background") 
    .attr("width", width) 
    .attr("height", height) 
    .on("click", loadcounties); 

var g = svg.append("g") 
    .attr("id", "states"); 

d3.json("readme.json", function(json) { 
    g.selectAll("path") 
     .data(json.features) 
    .enter().append("path") 
     .attr("d", path) 
     .on("click", loadcounties); 
}); 

這裏是我用來加載區(僅亞拉巴馬州在這裏的功能):

function loadcounties (d) { 
    var id = d3.select(this).attr("name"); 
    var bbox = this.getBBox(); 

    if (id == "Alabama") { 
    d3.json("alabamacounties.json", function(json) { 
      g.selectAll("path") 
       .data(json.features) 
       .enter() 
       .append("path") 
       .attr("d", path); 
        }); 
} 

}

當我嘗試對自己它的工作原理,但因爲它不是一個函數顯示阿拉巴馬州。 ?任何想法是什麼,我做錯了感謝

+0

您是否收到錯誤消息?您是否確認了您的代碼正在請求縣域邊界的JSON?假設您已有路徑,您可能還想將匹配函數傳遞給'.data()'。 –

+0

我沒有收到任何錯誤,只是沒有發生點擊。我不知道如何驗證代碼是否請求JSON或者我應該如何傳遞匹配函數...我已經開始在一週前使用d3 – nuri

+0

請參閱示例[此問題](http://stackoverflow.com/問題/ 16544269 /爲什麼 - 是最第一鏈接項感跳過/ 16545072)。 –

回答

0

這是我如何解決它:

function loadstate(d) { 

var g = svg.append("g") 
     .attr("id", "counties"); 

     switch (d.id){ 

     case "01" : 
      jsoncounty="countiesjson/01.json"; 
     break; 

像這樣每一個國家,然後:

d3.json(jsoncounty, function(json) { 
     g.selectAll("path") 
      .data(json.features, function(d,i) { return d+i; }) 
      .enter() 
      .append("path") 
      .attr("d", path) 
      .on("click",text) 
      .append("title") 
      .text(function(d) { return d.properties.NAME; }); 
    });