gpt4 book ai didi

javascript - d3-annotation + d3-zoom - 缩放而不缩放

转载 作者:行者123 更新时间:2023-12-03 20:46:09 25 4
gpt4 key购买 nike

我是 d3 的新手。我一直在到处寻找如何做到这一点的例子。但本质上,我在 svg 上创建了一堆 d3-annotations,指向各种 x,y 坐标。我的项目是一个映射项目,所以我创建了一个缩放功能:

d3
.zoom()
.scaleExtent([1, 100])
.on('zoom', event => {
g1.attr('transform', event.transform);
})
这对于放大 map 和我分别添加到 map 中的圆圈非常有用。然而,注释也变得同样大。我如何“转换”或“缩放” map /组 (g),以便注释继续指向正确的位置,但渲染的注释也不会因此变得很大。

最佳答案

缩放时,对 g1 组应用变换。在 <g> 上应用变换将缩放其中的所有元素。一种可能的设计是有两组,一组受缩放影响(代码中的 g1),另一组不受缩放影响:

<svg>
<g class="zoomable">
<!-- the rest, zoomable -->
</g>
<g class="not-zoomable">
<!-- annotations -->
</g>
然后,在您的代码中,将注释放在 not-zoomable 中组,并让缩放变换 zoomable仅限组:
let zoomableGroup = d3.select(".zoomable")
d3
.zoom()
.scaleExtent([1, 100])
.on('zoom', event => {
zoomableGroup.attr('transform', event.transform);
})

关于javascript - d3-annotation + d3-zoom - 缩放而不缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65510740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com