2013-07-11 78 views
0

我正在嘗試遵循mbostock的「讓我們製作地圖」教程:http://bost.ocks.org/mike/map/。在本教程中的某一點,他寫道:對TopoJSON格式的困惑

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)嗎?

謝謝你的時間!

回答

1

在瀏覽器中使用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文件,並做同樣的事情。

仔細檢查,從邁克這個指令工作:

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

現在,如果你偷看你的JavaScript控制檯,你應該看到,代表行政邊界和英國人口密集場所的拓撲對象。

如果你得到它的工作,讓我知道,因爲我不能讓我的個人TopoJSON文件加載,雖然我可以讓所有的邁克這樣做。我得出結論,我的TopoJSON文件肯定是錯的。