使用D3连接数据并在地图中弹出

时间:2015-02-28 14:25:52

标签: javascript jquery d3.js

我正在尝试将数据连接到地图并在鼠标悬停时弹出。我在数据集中只使用了3-4行进行测试..

http://jsfiddle.net/2emnt8m3/1/

这是:

    d3.select("body").selectAll("path").each(function(d,i){
    state_id = d3.select(this.parentNode).attr("entity_id");
    title = d3.select(this).attr("title");
    }); 

当鼠标悬停在州或联盟区域时,会弹出犯罪数据。

这是我在json / js中收集的完整数据集 http://pastebin.com/mZ6zc5CB

1 个答案:

答案 0 :(得分:2)

我将您的数据转换为d3.map以便于查找,然后通过悬停元素的ID来提取数据:

var m = d3.map(data, function(d) { return d.STATEUTS.toUpperCase(); }); 
var el=d3.select("body").selectAll("path")
.on("mouseover", function(d) {  
    var id = d3.select(this).attr('id');
    if (m.has(id)){      
        var d = m.get(id);
        //Display of Data on mouse hover        
        div.transition().duration(100).style("opacity", .75);      
        div.html( "<bold><br/>"+ d.STATEUTS +"</bold><br/>"+"<br/>"
            +"Assault : "+ d.Assault +"<br/>"
            +"Cruelty : "+ d.Cruelty +"<br/>"
            +"Dowry Death : "+ d.Dowry +"<br/>"
            +"Dowry Act : "+ d.Prohibition +"<br/>"
            +"Immoral : "+ d.Immoral +"<br/>"
            +"Importation of girl : "+ d.Importation +"<br/>"
            +"Insult : "+ d.Insult +"<br/>"
            +"Kidnapping,Abduction : "+ d.Kidnapping +"<br/>"
            +"Rape : "+ d.Rape +"<br/>"
            +"Total : "+ d.Total +"<br/>"
        )
        .style("left",(d3.event.pageX-50) + "px")
        .style("top", (d3.event.pageY-132) + "px");  
    }
})

更新了fiddle