2016-07-12 3 views
1

d3マップが作成したオーストラリアのTopoJSONファイルをレンダリングしていないJSONファイルがあります。D3マップがオーストラリアのtopojsonファイルをレンダリングしない

同じコードは、アメリカの地図をうまく描画します。ブラウザインスペクタにエラーはなく、両方のマップはgeojson.ioのようなオンライン視覚化サイトでうまく描画されます。

私はJSONのリンクを提供しています。

  • Australian TopoJSONは私のコードで動作します(ただしgeojson.io/#map=4/-27.97/125.22に動作します)私のコードで動作します
  • American TopoJSONをしません

<html> 
 

 
<head> 
 
    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> 
 
    <script src="http://d3js.org/topojson.v1.min.js"></script> 
 
    <style> 
 
    path { 
 
     fill: #ccc; 
 
    } 
 
    </style> 
 
</head> 
 

 
<body> 
 
    <h1>topojson simplified Australia</h1> 
 
    <script> 
 
    var width = window.innerWidth, 
 
     height = window.innerHeight; 
 

 
    var path = d3.geo.path(); 
 

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

 
    d3.json("topo-australia-simplified.json", function(error, topology) { 
 
     if (error) throw error; 
 

 
     svg.selectAll("path") 
 
     .data(topojson.feature(topology, topology.objects.australia).features) 
 
     .enter().append("path") 
 
     .attr("d", path); 
 
    }); 
 
    </script> 
 

 

 
</body> 
 

 
</html>

答えて

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

をあなたが投影を与えていない:問題は、あなたが使用していることである

var projection = d3.geo.mercator() 
    .scale(500)//scale it up as per your choice. 
    .translate([-900,0]);//translate as it was scaled up. 

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

作業コードhere

+0

ありがとうございます!なぜ私は投影なしで米国の地図をレンダリングすることができますか知っていますか? – Dawid

+0

これは、 'd3.geo.path();'を実行したときに投影がnullであるためです。 (米国の場合)特徴値はズームする必要がないため、翻訳する必要はありません。私はそれがより良く説明されることを望む私の答えを編集しました。 – Cyril

関連する問題