2013-11-09 35 views
5

starałem się kod z tej strony: http://bl.ocks.org/bycoffe/3230965Message „d3.js TypeError: n jest nieokreślone” (dla D3 mapa świata z układu sił)

enter image description here

trzymam o błędzie, który " n jest niezdefiniowane ".

Po dalszym skalowanie w dół, i doszli do wniosku, że problem jest z tych linii:

(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]); 
      } 

     }) 

Problem wynika z ostatniego wiersza:

node.cx = xScale(pixelLoc(node.coordinates)[0]); 

Jednak nadal mam nie mam pojęcia, co oznaczają "n jest niezdefiniowane". Ktoś może pomóc?

+0

Czy można utworzyć [jsfiddle] (http://jsfiddle.net/) pokazujący problem? Nie ma "n" w linii, którą wskazujesz i nie jest jasne, jaki może być problem. –

+0

dobrze w zasadzie możesz spróbować użyć kodów w podanym przeze mnie linku html. po prostu skopiuj i wklej go i spróbuj uruchomić go lokalnie. n nie odnosi się do kodów w linii. odnosi się do pliku javascript d3.js. – user2972046

+1

Ah, działając lokalnie, mówisz. Wtedy mocno podejrzewam, że nie hostujesz pliku 'medals.json' na lokalnym serwerze podczas otwierania' index.html'. Czy tak jest? –

Odpowiedz

2

Jeśli używasz d3.min:

Zmień bibliotekę z d3.min.js do d3.js prawdopodobnie okaże się, że zmiany o błędach do

Błąd typu: tablicy jest niezdefiniowana

Co oznacza, że ​​funkcje min i max nie działają prawidłowo.

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