2017-01-12 159 views
1

我有一个D3地图,我已经创建了一个codepen。下面是如何在缩放后重新缩放D3地图

http://codepen.io/redixhumayun/full/VPepqM/

我已经包括了一些基本的缩放和平移到它的链接。但是,当我放大时,我希望重新缩放以适应变焦,而不仅仅保持相同的尺寸。我想让他们分开放大后提供的更大区域。

我不确定究竟应该找什么,这就是为什么我很难找到它。

这里是如果你想代表陨石留在他们的原来大小,无论变焦圈我都当前实现

var zoom = d3.zoom() 
      .on('zoom', zoomed); 

svg.call(zoom); 

//defining the zoomed function here 
function zoomed() { 
    map.attr('transform', d3.event.transform) 
    meteorite.attr('transform', d3.event.transform); 
} 

回答

1

变焦的代码,这是一个可能的解决方案:

重命名你的圈子变量:

var meteorites = meteorite.selectAll('circle') 
    //etc.. 

,并设置其半径和中风accordin克至变焦:

meteorites.attr('r', function(d) { 
     return weight_scale(d.properties.mass)/d3.event.transform.k 
    }) 
    .attr("stroke-width", 1/d3.event.transform.k); 

这里是CodePen:http://codepen.io/anon/pen/VPapPa?editors=1010

PS:因为范围的问题,我不得不将一些功能。

+0

嘿,这正是我一直在寻找的。万分感谢! –

+0

很高兴知道。我很困惑,因为你说你不希望他们*“保持相同的尺寸”* ...实际上,那就是你想要的! –

+0

我想知道你是否可以解释究竟d3.event.transform.k在这里做什么? –