Ваши примеры не работают для меня, поэтому я не могу представить ваш точный сценарий.
Прежде чем вы "уроните" элемент на холст, вы можете запросить позиции других ваших элементов и сделать некоторые вычисления, чтобы проверить, будет ли новый элемент перекрываться.
Очень простой пример этой концепции с использованием элементов круга может выглядеть следующим образом:
function overlap(circ1, circ2) {
var attrs = ["cx", "cy", "r"];
var c1 = circ1.attr(attrs);
var c2 = circ2.attr(attrs);
var dist = Math.sqrt(Math.pow(c1.cx - c2.cx ,2) + Math.pow(c1.cy - c2.cy, 2));
return (dist < (c1.r + c2.r));
}
var next_drop = paper.circle(x, y, r);
for (var i in circles) {
if (overlap(next_drop, circles[i])) {
// do something
}
}
Конечно, вычислить, где вы собираетесь поместить круг после того, как вы определили, что он перекрывается с другими, немного сложнее.