Рафаэль кумулятивный против абсолютного масштабирования / вращения / перевода? - PullRequest
2 голосов
/ 05 марта 2011

Я пытаюсь нарисовать интерактивную карту в Javascript, используя Raphael для выполнения тяжелой работы.

Фон карты - довольно сложная вещь, содержащая сетку, элементы карты, метки и т. Д.В довершение всего я собираюсь нарисовать материал, с которым фактически работает пользователь.Поскольку фон сложен, я не хочу перерисовывать его каждый кадр.Итак, после рисования я хотел бы повторно использовать эти элементы рисования, просто изменяя перевод, вращение, масштабирование фона при панорамировании, масштабировании и т. Д.

К сожалению, я довольно смущен примитивами преобразования Рафаэля: они ведут себя не так, как я ожидал.Если я позвоню scale(), масштабирование будет применяться к исходному размеру элемента чертежа;но translate() является кумулятивным, поэтому оно относится к предыдущему переводу.rotate() может быть любым, так как у него есть опция, которую я могу установить ...

Можно ли сделать абсолютный перевод?То есть, чтобы иметь возможность указывать абсолютные координаты нового центра моих объектов (которые обычно являются путями)?В противном случае отслеживает старое местоположение, чтобы я мог применить дельту, когда я хочу переместить ее в новое местоположение, разумным способом сделать это?

Или мне лучше было бы просто перерисовать все этокаждый кадр?(Я вижу предположения о том, что Рафаэль не силен в преобразованиях сложных чертежей, поскольку большая часть этого делается в Javascript; глядя на создаваемый SVG, я вижу, что перевод, похоже, возвращается в данные пути, чтоподтвердите это ...)

(Кстати, FWIW Я использую интерфейс GWT Raphael для всего этого.)

Ответы [ 2 ]

1 голос
/ 06 июня 2012

Вы можете использовать Element.attr для установки абсолютных позиций.Просто измените свойства x и y:

myElement.attr("x", myX);
myElement.attr("y", myY);
0 голосов
/ 06 мая 2011

Я успешно использовал плагин Raphael-ZPD.Я не уверен, что это подключится к GWT - вы можете проверить их исходный код и адаптировать его к своему варианту использования.

...