2016-08-19 45 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」,它的工作非常流暢。