@Azami88

Как решить проблему смещения дерева при перемещении или масштабировании?

Парни, неделю бьюсь с проблемой.
Есть код
https://jsfiddle.net/rfnj35xd/1/
Он нормально отрабатывает.
В событии клик, чтобы при клике на узел он перемещался в нужное место я добавил код
function click(event, d) {
  if (d && d.data) { // Проверяем, что d и d.data не являются undefined
    if (d.children) {
      d._children = d.children;
      d.children = null;
    } else if (d._children) {
      d.children = d._children;
      d._children = null;
    } else {
      console.log('d:', d)
      console.log('d.data:', d.data)
      console.log('d.name:', d.name)
      console.log('d.data.name:', d.data.name)
      console.log('d.data.id:', d.data.id)
      // window.location = d.data.url;
    }
//
// Вычисляем новые координаты x и y для перемещения g
//
    x = -d.x + treeTop;
    y = -d.y + treeLeft;
    
//Применяем перевод g с использованием новых координат
g.transition().duration(duration).attr("transform", "translate(" + y + "," + x + ")");

   //console.log("x: " + x + ", y: " + y);
    update(d);
  }
}

Узел перемещается.
Но при перемещении или масштабировании дерево двигается не с места, где оно находится фактически, а перебрасывает на начальное положение и с него происходит движение.

Что только не делал.
svg.call(d3.zoom().on("zoom", function(event) {
  currentTransform = event.transform; // Обновляем текущее преобразование при каждом масштабировании
  g.attr("transform", currentTransform); // Применяем текущее преобразование
}));

вобще кидает в положение 0 0 .
Перебрал кучу вариантов но ничего нормально не отработало.

Прошу помощи, даже готов заплатить. Заранее благодарю.
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы