EInserts supports the GDraggableObject() facility.
Here’s an example.
Unfortunately, GDraggableObject() doesn’t track position changes caused by changes of zoom level, so I disable EInsert draggability when you change the zoom level.
To activate draggability, call the new einsert.makeDraggable() method.
When the dragging is complete, an EInsert “dragend” event is triggered, which returns the new value of einsert.point. This allows you to use draggable EInserts on a development version of your map, position them accurately by dragging, then be notified of the final coordinates which you can then use for the live a with non-draggable EInserts .
Download EInserts from here einsert.js.