Это не ответ сам по себе, но он должен указывать вам правильное направление.
посмотрите ссылку на Raphael 2.0 для drag
Изображение рядом с ним делает в точности то, что вам нужно.Код этого файла находится в файле reference.js .Если вы ищете «Element.drag-extra», вы увидите этот фрагмент кода
(function (r) {
var x, y;
r.circle(15, 15, 10).attr(fill).drag(function (dx, dy) {
this.attr({
cx: Math.min(Math.max(x + dx, 15), 85),
cy: Math.min(Math.max(y + dy, 15), 85)
});
}, function () {
x = this.attr("cx");
y = this.attr("cy");
});
})(prepare("Element.drag-extra"));
Здесь Дмитрий ограничивает перетаскивание между минимумом 15 и максимумом 85 пикселей.Должна быть возможность использовать немного магии DOM, чтобы найти размер холста и соответствующим образом изменить приведенный выше код.
Надеюсь, это немного поможет.