Javascript 使用D3.js在单击时加载地图详细信息

Javascript 使用D3.js在单击时加载地图详细信息,javascript,json,maps,d3.js,Javascript,Json,Maps,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")

我正在尝试建立一个来自美国的地图。一旦地图显示了它的州边界,我想点击显示县边界 这是我显示地图的方式:

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 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; });
    });     

您是否收到错误消息?您是否验证了您的代码正在为县边界请求JSON?如果已经有路径,您可能还希望将匹配函数传递给
.data()
。我没有收到任何错误,只是单击时什么也没发生。我不知道如何验证代码是否正在请求JSON,或者我应该如何传递匹配函数。。。例如,我一周前就开始使用d3了。我已经在
.data()
中添加了匹配函数,但仍然不起作用,没有出现错误。我想做的是像这里被问到的:()你需要提供更多的信息。你说“不行”是什么意思?这部分代码是否可能根本就没有被调用(例如,因为
id
是您不期望的东西)?
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; });
    });