Я искал вокруг и не нашел твердого решения для установки масштаба масштабирования, когда пользователь дважды щелкает по экрану.D3 - Установка масштаба масштабирования двойного щелчка
Самая дальняя я получил, установив scaleVal, как показано в функции dblclicked(), как показано здесь, в скрипку
https://jsfiddle.net/helloGoodDay/62vq9h8p/3/
function dblclicked()
{
var translate = zoom.translate(),
mouse = d3.mouse(this),
scaleOld = zoom.scale(),
zoomOld = Math.log(scaleOld)/Math.LN2,
zoomNew = d3.event.shiftKey ? Math.max(minScale + 8, Math.ceil(zoomOld) - 1) : Math.min(maxScale + 8, Math.floor(zoomOld) + 1),
scaleNew = Math.pow(scaleVal, zoomNew),
zoomDelta = scaleNew/scaleOld;
svg.transition()
.duration(350)
.call(zoom
.scale(scaleNew)
.translate([(translate[0] - mouse[0]) * zoomDelta + mouse[0], (translate[0] - mouse[0]) * zoomDelta + mouse[0]])
.event);
d3.event.stopImmediatePropagation();
}
Однако, если вы дважды щелкните немного больше, узлы исчезают и мне тоже не нравится анимация.
Есть ли способ установить значение масштаба масштабирования таким образом, чтобы узлы не исчезали и что анимация не является этой нерешительностью?
Edit: Функция от https://github.com/d3/d3/issues/1985
Вы хотите установить максимум значение масштабирования? Потому что, если вы уменьшаете масштаб масштабирования, он всегда будет бесконечным увеличением. –
Благодарим вас за ответ. В скрипке текущий масштаб увеличивается от 1 до 1000. Так что да, я уже установил максимальное значение масштабирования. – helloGoodDay