我想在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");
我尝试将每个函数的结果保存到变量中,然后将它们与机场代码作为键连接,但结果变量为空。
感谢您的帮助!
答案 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.
});
});