【发布时间】:2017-03-01 11:59:27
【问题描述】:
我正在尝试查看 topojson 文件中的对象(城市中的建筑物),但出现以下错误:
Error: <path> attribute d: Expected number, "MNaN,NaNLNaN,NaNL…".
这是我的代码:
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.land {
fill: #e5e5e5;
stroke: #000;
stroke-width: 0.2;
stroke-opacity: 0.8;
}
.states {
fill: none;
stroke: #fff;
}
</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/queue.v1.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script src="http://d3js.org/d3.geo.projection.v0.min.js"></script>
<script>
var width = 800;
var height = 600;
var projection = d3.geo.mercator()
.center([30, 30])
.scale(500)
.translate([width / 2, height / 2]);
var path = d3.geo.path().projection(projection);
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
queue()
.defer(d3.json, "cairomonuments.json")
.await(ready);
function ready(error, cairo) {
if (error) throw error;
// Refine projection
var b, s, t;
projection.scale(1).translate([0, 0]);
var b = path.bounds(cairo);
var s = .95 / Math.max((b[1][0] - b[0][0]) / width, (b[1][1] - b[0][1]) / height);
var t = [(width - s * (b[1][0] + b[0][0])) / 2, (height - s * (b[1][1] + b[0][1])) / 2];
projection.scale(s).translate(t);
svg.selectAll("path")
.data(topojson.feature(cairo, cairo.objects.monuments).features)
.enter()
.append('path')
.attr('class', 'land')
.attr('d', path);
}
</script>
</body>
我只想将我的 geojson 文件中的地图居中并将其翻转到一边。我错过了什么?
【问题讨论】:
-
你有一份我们可以看到的 topojson 副本吗?
-
我在底部编辑了我的原始问题以获得文件的链接('topojson file here')。但以防万一,这里又是链接。 [链接]github.com/mhshaaban/city/blob/master/cairomonuments.json
标签: javascript html d3.js geojson topojson