D3:如何禁用带背景图像的图标缩放?

时间:2018-02-11 16:07:45

标签: javascript css d3.js

我正在尝试将图标放在D3地图上。我通过插入形状并用图片填充背景(PNG,SVG等)来构建这些图标

这样可以正常工作,直到您尝试缩放。放大时,图标会因变换而变形,我无法将它们固定/与父图形的大小保持一致。这是一个jsfiddle演示我的问题:https://jsfiddle.net/Guill84/Lo2mjhjq/3/

如何修改缩放以使其不会弄乱头像图标?伪代码应该是:

d3.select("#avatar").attr("transform", "scale(*don't scale with rest*)
 translate(*translate with rest to enable panning*)")

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案(众多)正在对<image>元素应用相同的更改:

d3.select("#avatar")
    .select("image")
    .attr("width", 40 / d3.event.scale)
    .attr("height", 40 / d3.event.scale);

这是更新后的JSFiddle:https://jsfiddle.net/nm8bLLcL/