2013-11-09 7 views
5

Я пытался из кода с этого сайта: http://bl.ocks.org/bycoffe/3230965сообщение «d3.js TypeError: п не определено» (для карты мира D3 с макете силой)

enter image description here

я храню, имеющий ошибку, что " 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». Кто-нибудь может помочь?

+0

Можете ли вы создать [jsfiddle] (http://jsfiddle.net/), показывая проблему? В строке, на которую вы указываете, нет 'n', и непонятно, что может быть проблемой. –

+0

ну в принципе вы можете попробовать использовать коды в html-ссылке, которую я дал. просто скопируйте и вставьте его и попробуйте запустить его локально. n не относится к кодам в строке. это относится к javascript-файлу d3.js. – user2972046

+1

А, запустив его локально, вы говорите. Тогда я сильно подозреваю, что вы не размещаете файл 'medals.json' на локальном веб-сервере при открытии' index.html'. Это так? –

ответ

2

Если вы используете d3.min:

Изменение библиотеки из d3.min.js в d3.js вы, вероятно, обнаружите, что изменения ошибки в

TypeError: массив не определен

Это означает, что функции min и max не работают должным образом.

var minX = d3.min(xs); 
//Change this for actual min value and max for actual max value and it should work.