2013-02-27 101 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