D3: как отключить увеличение значков с фоновым изображением?

1

Я пытаюсь позиционировать значки на карте 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*)")
Теги:
d3.js

1 ответ

1
Лучший ответ

Легкое решение (из многих) применяет одно и то же изменение к элементу <image>:

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

Вот обновленный JSFiddle: https://jsfiddle.net/nm8bLLcL/

  • 0
    Спасибо за это Герардо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню