У меня есть две кнопки, которые увеличивают и уменьшают масштаб. Я пытаюсь получить функциональность масштабирования в центре посередине, поэтому, когда я увеличиваю масштаб, она увеличивается в середине, а не там, где находятся кнопки. Я определил переменную zoomlistener так.Почему не работает d3.behavior.zoom(). Center()?
var width = 800;
var height = 500;
var zoomlistener = d3.behavior.zoom()
.center([width/2, height/2])
.on("zoom", redraw);
Тогда позвала его следующим ...
var zoomfactor = 1;
d3.select(".zoomin").on("click", function(){
zoomfactor = zoomfactor + 0.2;
zoomlistener.scale(zoomfactor).event(d3.select(".graphmap"));
});
d3.select(".zoomout").on("click", function(){
zoomfactor = zoomfactor - 0.2;
zoomlistener.scale(zoomfactor).event(d3.select(".graphmap"));
});
Но когда я увеличить в нем по-прежнему увеличивает масштаб, где кнопки.
.graphmap является
var svg = d3.select(".graph").append("svg")
.attr("width", width)
.attr("height", height)
.attr("class", "graphmap");
и finnally перерисовывать является
function redraw() {
console.log("here", d3.event.translate, d3.event.scale);
g.attr("transform","translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")");
}
У вас есть JSFiddle? Я думаю, что это потому, что ваша функция перерисовки использует ваш d3.event.translate в вашем преобразовании, поэтому я думаю, что если вы поставите 0,0, там он должен масштабироваться из центра, может быть .... –