D3 地图不呈现澳大利亚 topojson 文件
D3 Map not rendering Australian topojson file
我有一个 JSON 文件,d3 地图没有呈现我创建的澳大利亚地形 JSON 文件。
相同的代码可以很好地渲染美国地图。浏览器检查器中没有错误,并且两张地图在 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>
问题是您正在使用:
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
我有一个 JSON 文件,d3 地图没有呈现我创建的澳大利亚地形 JSON 文件。
相同的代码可以很好地渲染美国地图。浏览器检查器中没有错误,并且两张地图在 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>
问题是您正在使用:
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