2013-10-27 18 views
1

我最近一直在學習D3,我一直在玩這個symbol map tutorial添加文字到符號地圖

我已經嘗試了很多事情來獲取任何數據顯示在符號作爲文本,我似乎無法弄清楚如何做到這一點。

好像我需要沿線加

.text(function(d) { return d.properties.population; }) 

一些地方。我試過在各個地方使用.append或.selectAll,但是我無法讓它工作。

回答

1

你可以通過兩種方式來解決這個問題,你可以使用工具提示或者將地圖放在地圖上。這些關於this google group conversation等工具提示以及包括這些生物視覺鏈接的鏈接的討論很多:Simple tooltipTooltips as a helper。在bl.ocks例如你已經對準了使用簡單的工具提示選項將需要增加2行代碼爲:

svg.selectAll(".symbol") 
     .data(centroid.features.sort(function(a, b) { return b.properties.population - a.properties.population; })) 
    .enter().append("path") 
     .attr("class", "symbol") 
     .attr("d", path.pointRadius(function(d) { return radius(d.properties.population); })) 
    .append("title") 
     .text(function (d) { return d.properties.name; }); 

要將文本添加到您需要附加一些SVG文本元素的地圖。所以你需要設置類似於上面符號塊的東西,並計算文本的x和y。這樣做可能有更優雅的方式,但這使得它很清楚發生了什麼。 x和y由path.centroid來計算,它返回你的點的屏幕座標。

svg.selectAll("text") 
     .data(centroid.features).enter()  
    .append("text") 
     .attr("x", function (d) { return path.centroid(d)[0]; }) 
     .attr("y", function (d) { return path.centroid(d)[1]; }) 
     .text(function (d) { return d.properties.name; }); 

希望這有助於

您可以在行動,在這個bl.ock看到他們兩個。

+0

第二個適用於我,但第一個不工作。 (好吧,它將頁面的標題設置爲「加利福尼亞」,但我不認爲這就是你要做的意思,我不知道它應該怎麼說。 – user2926101

+0

這很奇怪,因爲它是爲我工作看看添加到答案中的bl.ock,它已經可以正常工作了,當你將鼠標懸停在人口圈時,如果你對答案感到滿意,那麼不要忘了接受它 – user1614080

+0

啊,它正在工作,需要一秒鐘才能加載,而我太急躁了;) – user2926101