【发布时间】:2013-11-21 12:22:06
【问题描述】:
我正在试用此站点的代码:http://bl.ocks.org/bycoffe/3230965
我一直有“n 未定义”的错误。
在进一步缩小后,我得出的结论是问题出在以下几行:
(function() {
var width = 800;
var height = 700;
var padding = 10;
var k;
var node;
var pixelLoc = d3.geo.mercator();
pixelLoc.scale(2000);
svg = d3.select('#map')
.append('svg:svg')
.attr('width', width)
.attr('height', height);
d3.json('coordinates.json', function(coordinates) {
var coords = [];
var xs = [];
var ys = []
for (alias in coordinates) {
coords.push(coordinates[alias]);
xs.push(coordinates[alias][0]);
ys.push(coordinates[alias][1]);
}
var minX = d3.min(xs);
var maxX = d3.max(xs);
var xScale = d3.scale.linear().domain([minX, maxX]).range([-50, -30]);
var minY = d3.min(ys);
var maxY = d3.max(ys);
var yScale = d3.scale.linear().domain([minY, maxY]).range([-20, -10]);
d3.json('medals.json', function(medals) {
var pointScale = d3.scale.sqrt().domain([0, 80]).range([0, 75]);
nodes = []
for (i=0; i<medals.length; i++){
node = medals[i];
node.coordinates = coordinates[node.alias];
node.cx = xScale(pixelLoc(node.coordinates)[0]);
}
})
问题出在最后一行:
node.cx = xScale(pixelLoc(node.coordinates)[0]);
但是,我仍然不知道“n 未定义”是什么意思。有人能帮忙吗?
【问题讨论】:
-
你能创建一个jsfiddle 来显示问题吗?您指向的行中没有
n,目前还不清楚可能是什么问题。 -
好吧,基本上你可以尝试使用我给出的 html 链接中的代码。只需复制并粘贴它并尝试在本地运行它。 n 不是指该行中的代码。它指的是d3.js的javascript文件。
-
啊,你说的是在本地运行。然后我强烈怀疑您在打开
index.html时没有在本地网络服务器上托管文件medals.json。是这样吗? -
我在 Bl.ock 或 Gist 上看不到 Medals.json 文件。你从哪里得到它?此外,您可以在控制台中展开一些错误,这可以为您提供一些关于哪里出了问题的提示。
标签: d3.js maps geo force-layout mercator