2013-10-08 3 views
1

Пожалуйста, смотрите мою скрипку: http://jsfiddle.net/haiphong/BRjFE/Уплотненный увеличивает выпуск в D3

Вы можете удерживать клавишу SHIFT, а затем перетащить прямоугольник, чтобы переместить его и круг внутри него вокруг. Вы также можете удерживать SHIFT и масштабировать. Этот зум/панорама выполняется d3.behavior.zoom(). Работает хорошо.

Я хочу масштабировать и панорамировать круг, когда НЕ удерживает сдвиг. Итак, я создаю еще один d3.behavior.zoom(). Тем не менее, круг может быть увеличен, но не изменен. Отлаживая, я вижу, что, когда я панорамирую круг, код обработки не выполняется.

В сумме, при привязке zoom к внешнему элементу g и к внутреннему элементу g внешний вид хорошо подходит для масштабирования/панорамирования; однако внутреннее изображение работает только для увеличения. Как заставить его работать на кастрюлю?

ответ

0

Я нашел решение для своего ответа. http://jsfiddle.net/haiphong/BRjFE/4/

Когда я панорамирую круг, его событие zoom не срабатывает. Тем не менее, его событие zoomstart срабатывает, и он запускается перед его родительским zoomstart. Так или иначе, когда загорается родительский zoomstart, он ест событие круга.

Итак, в zoomstart круга, я принудительно останавливаю событие, когда SHIFT не удерживается. Это заставляет стрелять zoom.

Смежные вопросы