我想打印一张托斯卡纳省的D3.js地图。我按照以下代码在线收集的说明(我使用Flask在线渲染):
<!DOCTYPE html>
<html lang="en">
<head>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script src="http://d3js.org/d3.geo.projection.v0.min.js">
</script>
</head>
<body>
<div id="map"></div>
</body>
<script type="text/javascript">
var width = 700,
height = 300;
var projection = d3.geo.mercator()
.center([0, 50])
.scale(100)
.rotate([0,0]);
var svg = d3.select("#map").append("svg")
.attr("width", width)
.attr("height", height);
var path = d3.geo.path()
.projection(projection);
var g = svg.append("g");
d3.json("{{ url_for('static', filename='italy.json') }}", function(error, topology) {
console.log(topology);
g.selectAll("path")
.data(topojson.feature(topology, topology.objects.ITA_adm2).features)
.enter()
.append("path")
.attr("d", path);
console.log(g);
});
</script>
</html>
查看JavaScript控制台时,它不会返回任何类型的错误,当我在网上找到word.json
时,它可以正常工作。
为了制作我的地图,我下载了意大利各省GeoJSON(https://github.com/deldersveld/topojson/blob/master/countries/italy/italy-provinces.json)。我将它加载到站点mapshaper上,我只选择NAME_1==Toscana
的元素。然后我将结果导出到topojson中(因此,您在数据中看到.ITA_adm2
,因为它是存储几何的值的名称)。
结果并没有给我任何问题,但它也没有显示任何问题。我认为错误可能与TopoJSON有关,但是当我打印出console.log
值时,它似乎读得很好。