Официальная документация - это то, где моя голова начала вращаться. Я смотрел на это довольно долго, потому что я не мог понять, как передать новые координаты в грядущие преобразования матрицы.
Мне, наконец, удалось выяснить проблему. Это был вопрос подключения слушателя, когда Mover запускает onMoveStop:
dojo.connect(movable, "onMoveStop", map, "reposition");
Затем я получаю новые пройденные расстояния и передаю их в любой перевод матрицы вращения или масштабирования в моем графическом классе:
updateMatrix: function(){
//So far it is the group which is being rotated
if (this.group) {
if(!this.curr_matrix){
this.curr_matrix = this.initial_matrix;
}
this.group.setTransform([
this.m.rotateAt(this.rotation, this.stage_w_2, this.stage_h_2),
this.m.scaleAt(this.scaling, this.stage_w_2, this.stage_h_2),
this.curr_matrix
]);
//this.group.setTransform([
// this.m.rotateAt(this.rotation, mid_x, mid_y),
// this.m.scaleAt(this.scaling, mid_x, mid_y),
// this.initial_matrix]);
}
},
reposition: function(){
mtx = this.group._getRealMatrix();
this.curr_matrix = this.m.translate(mtx.dx, mtx.dy);
},
Жизнь снова денди. Спасибо Евгению за предложения.