2013-03-08 42 views
1

我是D3新手。我的目标是创建一个地图,在其上面绘制一个SVG图层并定义区域,然后标记这些区域。D3 + Google Maps +路径+标签Bugih平移和缩放

标签有一个错误。我可以成功添加它们,但是当我平移和缩放时,它们不会随地图一起移动。我有一种感觉,它与为文本标签确定的'x'和'y'值有关,但我不确定这些值应该是什么。

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

我的代码是基于关闭的这一点:Overlay d3 paths onto Google Maps? 这个:Add names of the states to a map in d3.js

的jsfiddle与示例代码:http://jsfiddle.net/vZmrZ/

任何意见将是巨大的!

回答

4

我想出了答案! x和y属性需要被调用两次,一次在“进入”之前和一次在“进入”之后,以便在地图移动时得到更新。没有更多的平移和缩放问题:)

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

        }); 

更新小提琴:http://jsfiddle.net/vZmrZ/1/