Может быть, отвечу не совсем по сути вопроса, но предложу использовать библитеку специально созданную для подобных задач:
d3. Это позволит переложить все проблемы оптимизации на плечи самой библиотеки и сконцентрироваться на выполнении первоначальной задачи.
Есть все, что нужно: перемещение схемы (отсутствие границ), зум, события, оптимизированное обновление схемы при изменении данных и прочее. Посмотрите демки.