Я пытался из кода с этого сайта: http://bl.ocks.org/bycoffe/3230965сообщение «d3.js TypeError: п не определено» (для карты мира D3 с макете силой)
я храню, имеющий ошибку, что " 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 undefined». Кто-нибудь может помочь?
Можете ли вы создать [jsfiddle] (http://jsfiddle.net/), показывая проблему? В строке, на которую вы указываете, нет 'n', и непонятно, что может быть проблемой. –
ну в принципе вы можете попробовать использовать коды в html-ссылке, которую я дал. просто скопируйте и вставьте его и попробуйте запустить его локально. n не относится к кодам в строке. это относится к javascript-файлу d3.js. – user2972046
А, запустив его локально, вы говорите. Тогда я сильно подозреваю, что вы не размещаете файл 'medals.json' на локальном веб-сервере при открытии' index.html'. Это так? –