我试图在这里关注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)吗?
谢谢你的时间!
答案 0 :(得分: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
的层次结构子单元包含GeometryCollection。看看你的json文件并做同样的事情。
仔细检查Mike的这条指令是否有效:
d3.json("uk.json", function(error, uk) {
console.log(uk);
});
现在,如果您查看JavaScript控制台,您应该会看到一个拓扑对象,它代表英国的行政边界和人口稠密的地方。
如果你让它工作,请告诉我,因为我无法加载我的个人TopoJSON文件,尽管我可以让所有迈克这样做。我得出的结论是,我的TopoJSON文件必须以某种方式出错。
答案 1 :(得分:1)