0

我正在尝试在此处遵循 mbostock 的“让我们制作地图”教程:http: //bost.ocks.org/mike/map/。在教程的某一点,他写道:

d3.json("uk.json", function(error, uk) {
    svg.append("path")
       .datum(topojson.feature(uk, uk.objects.subunits))
       .attr("d", d3.geo.path().projection(d3.geo.mercator()));
});

如果没有看到他的 topoJSON 文件的格式,很难确定我的代码对应的“uk.objects.subunits”行是什么(我的 topoJSON 可以在这里查看:https ://gist.github.com/jcahan/e1772766f01b68b00dc9 )。

有人可以帮助澄清我(和未来的读者)如何确定我的 topojson 文件的内部属性(例如 uk.objects.subunits)吗?

谢谢你的时间!

4

2 回答 2

2

使用浏览器中的 Web 控制台(我在 Firefox 中使用 Firebug 扩展)查看 Mike 的示例页面,您可以看到浏览器拉下 uk.json 文件并查看其格式。这是相关的片段:

{"type":"Topology","transform":{"scale":
[0.001546403012701271,0.0010939367048704803],"translate":
[-13.69131425699993,49.90961334800009]},"objects":{"subunits":
{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","id":"ENG","arcs":[[[0]],
[[1]],[[2]],[[3]],[[4]],[[5]],[[6,7,8,9]]],"properties":{"name":"England"}},

可以看到 uk.objects.subunits 的层次结构

subunits 包含 GeometryCollection。查看您的 json 文件并执行相同的操作。

仔细检查 Mike 的这条指令是否有效:

d3.json("uk.json", function(error, uk) {
    console.log(uk);
});

现在,如果您查看 JavaScript 控制台,您应该会看到一个拓扑对象,该对象代表英国的行政边界和人口稠密的地方。

如果你让它工作,请告诉我,因为我无法加载我的个人 TopoJSON 文件,尽管我可以让 Mike 的所有文件都这样做。我得出的结论是我的 TopoJSON 文件一定是错误的。

于 2013-07-14T08:11:00.470 回答
1

当然。

该 JSON 文件恰好是该示例的亲密朋友(实际上是邻居)。所以你可以在http://bost.ocks.org/mike/map/uk.json看到它

问候。

于 2013-07-15T22:29:29.510 回答