2013-02-27 64 views
1

我試圖繪製d3.js地圖,但我不斷收到Problem parsing d="MNaN,NaN"d3.js麻煩解析「MNaN,NAN」

<!-- language: lang-js --> 
    var width=960, height=500; 
    var svg = d3.select("body").append("svg") 
    .attr("width", width) 
    .attr("height", height); 
    var q = 0; 
    var sc = 3000; 
    var d3line2 = d3.svg.line() 
        .x(function(d){q= 0.95105*sc*(d[0]+66.4262); return q;}) 
        .y(function(d){q= sc*(-1*d[1]+ 18.2336); return q;}) 
        .interpolate("linear"); 

    d3.json("/prCounties.json", function(d){ 

     for(var k = 0; k < d.features[0].length; k++){ 
      svg.append("path") 
      .attr("d", d3line2(d.features[0][k].geometry.coordinates)) 
      .attr("class", "stroke"); 
     } 
    }); 

這裏是GeoJSON的文件 - 它應該是相同的,以什麼對GitHub

{ 
"type": "FeatureCollection", 
"properties": {"kind": "state", "state": "PR"}, 
"features": [[ 
    {"geometry": {"type": "MultiPolygon", "coordinates": [[[[-66.7222, 18.2198], [-66.6838, 18.2034], [-66.6729, 18.1541], [-66.6948, 18.1322], [-66.7167, 18.1322], [-66.7331, 18.1103], [-66.7715, 18.1377], [-66.7989, 18.1322], [-66.8262, 18.1705], [-66.8153, 18.2308], [-66.7824, 18.2527]]]]}, 
"type": "Feature", "properties": {"kind": "county", "name": "Adjuntas", "state": "PR"} 
} 

回答

2

可能有不止一個問題(和的jsfiddle將幫助),但這裏的一個:

d3.svg.line()發電機預計點的數組。你給它[[[[-66.7222, 18.2198], [-66.6838, 18.2034]....,其中一個點數組,但它進一步嵌套到兩個更高級別的數組中。我想這是因爲按規格劃分的coordinates屬性可以描述多個分段(例如,構成單個地理實體的多個島或者像邊界內的湖一樣的「洞」)。

所以你的情況,你需要給它d.features[0][k].geometry.coordinates[0][0]

說了這麼多,和不知道的用途,那你會繪製經緯度對,沒有預計的X,Y點的通知。如果後者是你期望的,那麼你會想看看d3.geo.path(),這將允許你指定一個投影。

+0

JsFiddle。這是一個很好的電話。它出來了。 [圖](https://a248.e.akamai.net/camo.github.com/521b09a4A0d52539fd2b83060503d96bada85d277/687474703a2f2f646c2e64726f70626f782e636f6d2f752f31373934393130302f70722e706e67) – 2013-02-28 07:07:08