Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

203
Views
desplazamiento panorámico y zoom con barras de desplazamiento en d3 v3

Estoy tratando de implementar la panorámica, el zoom y el desplazamiento con barras de desplazamiento.

Tengo dos problemas con la combinación de zoom, panorámica y barras de desplazamiento:

1. Desplazar/arrastrar el svg está funcionando con barras de desplazamiento en movimiento, cuando desplaza/arrastra el gráfico->desplazarse con las barras de desplazamiento->desplazarse/arrastrar con el cursor en svg, va a la posición anterior donde se realizó el último desplazamiento/arrastre. 2. La barra de desplazamiento con zoom no funciona de maravilla, cuando hace zoom->desplazamiento->zoom, se acerca a la ubicación anterior donde ocurrió el primer zoom.

cómo implementar estas líneas "wrapper.call(d3.zoom().translateTo, x/scale, y/scale);" en d3.v3. Sería de gran ayuda si alguien muestra la solución para implementar en d3 versión 3. El siguiente código es para hacer zoom, desplazarse y desplazarse.

 function zoomed() { var scale = d3.event.scale; const scaledWidth = (newWidth+1000) * scale; const scaledHeight = height * scale; // Change SVG dimensions. d3.select('#hierarchyChart svg') .attr('width', scaledWidth) .attr('height', scaledHeight); // Scale the image itself. d3.select('#hierarchyChart svg g').attr('transform', "scale("+scale+")"); // Move scrollbars. const wrapper = d3.select('#hierarchyChart')[0]; if(d3.event.translate >= [0,0] && d3.event.translate <=[scaledWidth,scaledHeight]){ wrapper[0].scrollLeft = -d3.event.translate[0]; wrapper[0].scrollTop = -d3.event.translate[1]; } console.log(wrapper[0].scrollLeft); console.log(wrapper[0].scrollTop); // If the image is smaller than the wrapper, move the image towards the // center of the wrapper. const dx = d3.max([0, wrapper[0].clientWidth/ 2 - scaledWidth / 2]); const dy = d3.max([0, wrapper[0].clientHeight / 2 - scaledHeight / 2]); // d3.select('svg').attr('transform', "translate(" + dx + "," + dy + ")"); } function scrolled() { const x = wrapper[0].scrollLeft + wrapper[0].clientWidth / 2; const y = wrapper[0].scrollTop + wrapper[0].clientHeight / 2; const scale = d3.event.scale; // Update zoom parameters based on scrollbar positions. // wrapper.call(d3.zoom().translateTo, x / scale, y / scale); }
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!