There are 2 problems when looking for items at a given position:
Example:
canvas .c1
bind .c1 <Double-1> { onDblClick %x %y }
proc onDblClick {x y} {
set x [.c1 canvasx $x] ; set y [.c1 canvasy $y]
set i [.c1 find closest $x $y]
set t [.c1 gettags $i]
puts "$i $t"
}