2016-08-19 20 views
1

详细信息:

我有以下设置。生成的自定义topjson文件,只是想显示在我的网页。我可以在控制台中看到,创建并正确加载数据,但由于某些原因,d3不会显示任何路径元素,也不会显示任何内容。D3中的GeoJSON:路径未绑定到数据

的Javascript

var width = 960; 
    var height = 500; 


    var svg = d3.select('body').append('svg') 
     .attr('width', width) 
     .attr('height', height); 


    var projection = d3.geo.albersUsa() 
     .scale(1000) 
     .translate([width/2, height/2]); 


    var path = d3.geo.path() 
     .projection(projection); 

     d3.json('http://localhost.com/calgary.json', function(error, calgary) { 
     svg.append('path') 
     .datum(topojson.feature(calgary)) 
     .attr('d', path) 
     .attr('fill','red'); 
     }); 

定制Topojson文件:

http://pastebin.com/ere2Ww7K

依赖于:

<script src="http://d3js.org/d3.v3.min.js"></script> 
    <script src="http://d3js.org/topojson.v1.min.js"></script> 
    <script> 
+0

你在控制台上有任何错误吗? – elias

回答

1

对于我来说,似乎有在你的代码中有两处错误:
第一,在函数内部所谓的JSON负载,基准内topojson调用需要两个参数,第二个是一个对象:

.datum(topojson.feature(calgary, calgary.objects.CALGIS_ATS_SECTIONS))

其次,你的topojson文件似乎已损坏。在第一次修正之后,出现了一些东西,但它只是一堆多边形,填满了一个大矩形。

我试着用一个有效的topojson文件(即http://bl.ocks.org/mbostock/raw/4090846/us.json)在上次调用中用“land”替换了“CALGIS_ATS_SECTIONS”,它的工作非常流畅。