我是d3.js的noob。我使用topoJSON數據來渲染地圖,到目前爲止它的工作效果很好。現在我想覆蓋每個國家/地區頂部的一些數據,例如文字或圈子,我正在打一堵牆。我有類似這樣的代碼:疊加層不顯示在數據生成的d3形狀上
哪個正確呈現我的地圖。爲了覆蓋它的一些圈子裏,我做了以下內容:
countries
.append("circle")
.attr("r", function(d, i, j) {
return 10; // for now
})
// getCentroid below is a function that returns the
// center of the poligon/path bounding box
.attr("cy", function(d, i, j) { return getCentroid(countries[0][j])[0]})
.attr("cx", function(d, i, j) { return getCentroid(countries[0][j])[1]})
.style("fill", "red")
這是非常麻煩的(特別的方式,訪問國家陣列),但它成功在附加用於表示一個國家的每個路徑的圓。問題在於圓圈存在於SVG標記中,但在文檔中完全不顯示。我顯然做錯了什麼,但我對此感到失落。
聽起來像座標是關閉的。你檢查了嗎?請記住,您需要將質心點投影到屏幕座標。 –
手動編輯標記並將圓圈設置爲鄉村路徑的兄弟姐妹可以使圓圈可見(儘管確實有錯誤的座標),但圓圈在國家小徑的孩子時消失。另外,如何將圓形投影到適當的座標中,而不是路徑? – GiantSquid
啊,我看到 - 'circle'元素不能是'path'元素的子元素。將更詳細地發佈答案。 –