문제

(d3 sure generating lots of questions)

I am trying to modify Mike's zoomable treemap (http://bost.ocks.org/mike/treemap/) so that the value field is displayed in the centre of each 'parent' rect. Here's my new code which works fine... until I zoom in:

CSS

.overlaidText   {
    font-size: 2.2em;
    text-anchor: middle;
    fill: white;
    fill-opacity: 0.8;
    stroke: black;
    stroke-width: 1px;
    stroke-opacity: 0.5;
}

JS

    g.append("text")
      .classed("overlaidText",true)
      .text(function(d) { return Math.round(d.value)+"M"})
      .call(middletext);

    function middletext(text) {
      text.attr("x", function(d) { return x(d.x + d.dx / 2); })
          .attr("y", function(d) { return y(d.y + d.dy / 2) + 16; });
    }

Here is the live (broken) code: http://democra.me/treemap.htm

Does anyone know what I need to change to get the overlaidText nodes to behave when zooming (in and out)?

도움이 되었습니까?

해결책

Here is the updated fiddle with the changes below. Is this what you are looking for?

// Transition to the new view.
t1.selectAll("text").call(text).style("fill-opacity", 0);
t2.selectAll("text").call(text).style("fill-opacity", 1);
t2.selectAll(".overlaidText").call(middletext).style("fill-opacity", 1); // added
t1.selectAll("rect").call(rect);
t2.selectAll("rect").call(rect);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top