D3 zoom manual, como definir a conversão para zoom

Preciso fazer uma transição manualmente, como eu sei sobre o zoom d3, o zoom não escutará meu zoom manual; portanto, depois do zoom manual, quando uso o mouse para arrastar ou a roda do mouse para rolar, o zoom d3 inicia o evento a partir do anterior posição (traduzir) e valor de escala que o zoom d3 armazenou, é tão terrível para o meu mapa. Portanto, preciso definir a conversão e a escala do zoom após o zoom manual e posso definir a escala do zoom, mas não sei o valor para definir a conversão do zoom.

       g.transition()
        .duration(1000)
        .attr("transform", "translate(" + (window_width / 2 + translateX) + "," + (window_height / 2 ) + ")scale(" + zoomLevel + ")translate(" + (-x + 10) + "," + -y + ")")
        .each("end", function () {
            if (zoomLevel > 1) {
                $("#zoom_control").show();
                showCenteredTextInCircle();
                // zoom.scale(zoomLevel);
                // zoom.translate([x*zoomLevel, y*zoomLevel]);
            }
        });

Este código é referência ded3-zoom-example

Alguém sabe o zoom certo traduzir valor após minha transição manualmente? Obrigado !!!