D3js: Как очистить масштаб увеличения, установленный событием d3.zoom?

Я использую поведение d3.behavior, чтобы прикрепить событие масштабирования к моему SVG, поэтому, когда колесо мыши используется, я могу получить событие масштабирования с translate и scale, которое затем использую для установки атрибута transform элемента.

Кажется, значение zoom.scale где-то постоянно, поэтому каждый раз, когда используется колесо мыши, оно всегда содержит правильное значение масштабирования с учетом всех предыдущих событий масштабирования. Это круто, но мне нужен способ очистить это значение, скажем, кнопка масштабирования сброса. Когда пользователь нажимает на кнопку, в следующий раз, когда он прокручивает для масштабирования, элемент снова будет масштабироваться от его первоначального размера.

Так где же D3 хранит это значение и как мне его сбросить?

ОБНОВИТЬ:

Этот вопрос также имеет другой аспект: если я программно установлюпреобразование» Атрибут для преобразования масштабирования, событие масштабирования не примет это во внимание. Поэтому, если я позже использую колесо мыши для увеличения, я ввернут, потому что я могу уничтожить оригинальное преобразование. Таким образом, мне нужен способ программно установить, а не просто сбросить "переведите" а также "масштаб" значение события масштабирования, где бы оно ни хранилось.

 mg107527 сент. 2014 г., 21:03
Обратите внимание на этот комментарий человека с похожей проблемой на форуме группы d3 google:groups.google.com/d/msg/d3-js/-qUd_jcyGTw/ksHIZi7baCsJ

Ответы на вопрос(1)

Решение Вопроса

Масштаб увеличения сохраняется в вашем объекте увеличения. Я'Я предполагаю, что у вас есть строка кода, которая выглядит следующим образом:

var zoom = d3.behavior.zoom() 

Получить масштаб из этого объекта очень просто:

zoom.scale()

Чтобы уменьшить x2:

zoom.scale( zoom.scale()/2 )

Перевод работает так же, сzoom.translate() а такжеzoom.translate( [x, y] ) получить и установить.

Чтобы синхронизировать отображение с масштабированием, просто убедитесь, что при обновлении одного также обновляется и другой.

 Xavier_Ex19 июн. 2013 г., 20:29
Ах, неважно, я понял это, это объект d3.event.target. Спасибо за Ваш ответ :)
 Xavier_Ex19 июн. 2013 г., 21:11
Извините, я должен задать еще один вопрос, есть ли способ, которым я могу получить это прямо от самого объекта? Или есть способ, которым я могу сохранить масштабируемый объект в интересующем объекте?
 Adam Pearce19 июн. 2013 г., 20:17
 Xavier_Ex19 июн. 2013 г., 20:24
Это круто! Есть ли способ, которым я могу получить этот объект из объекта события? Или я должен явно определить и сохранить его как var?

Ваш ответ на вопрос