d3.js使用不同文件

时间:2017-01-22 23:07:44

标签: d3.js

我想在d3.js

的地图上绘制美国机场

源文件是csv文件,只有机场代码,例如LAX或JFK。 坐标位于不同的json文件中。 我正在使用函数 plot_airports ,我的问题是如何将机场代码与坐标连接到数据变量中。

function plot_airports(data) {
        svg.append('g')
           .attr("class", "airports")
           .selectAll("circle")
           .data(data)
           .enter()
           .append("circle")
           .attr('cx', function(d) {return projection([d.lon,d.lat])[0]; })
           .attr('cy', function(d) {return projection([d.lon,d.lat])[1]; })
           .attr('r', 5)

阅读机场代码的功能如下:

d3.csv("sample.csv",function(d) {
    return d["airport"];
    });

和机场的那个:

d3.json("airports.json"); 

我尝试将每个函数的结果保存到变量中,然后将它们与机场代码作为键连接,但结果变量为空。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

d3.csv函数不会返回可以分配给变量的可用值。也就是说,你做不到:

var foo = d3.csv("sample.csv",function(d) {
    return d["airport"];
});

这根本行不通。

解决方案是嵌套两个异步函数:

d3.json("airports.json", function(dataCoordinates) {

    //get the airports coordinates in an array named 'dataCoordinates'

    d3.csv("sample.csv", function(dataCodes) {

        //get the airports codes in an array named 'dataCodes';
        //create your circles accessing both arrays, or join the arrays
        //using the airport code as key.

    });

});