My tasks force me to use labels for objects. It should look like a simple rectangles with formatted text and buttons linked with object by line. Object is a position (rendered with image for example) with some attributes, such as speed, brutality, fuel etc. The best solution I see is Annotation (GlobeAnnotation). Annotation can contains buttons, images, lext labels - everything i need! But there are issues with rendering. Annotation have TRIANGLE_FAN rendering from buffer of Double pairs and it looks like I can't make connecting line from "leader" (triangle, connecting Position and bottom of annotation). Leader can only connect Position with bottom, but i need sometimes to connect position with left side or right side. Also my application should provide a dragging of this annotation. When dragging by user, annotation's position should be constant (there are object in position and the start of connecting line) and rectangle of annotation should move with mouse (second point of connecting line always moves with rectangle).
My second idea is to make derieved class FeaturedGlobeAnnotation and override some rendering methods (and add setOffset(Point offset) method). Also I developed my own implementation of SelectListener to modify annotation's offset, but not position. This solution works fine (even with rude realization with executing of raw GL methods to draw line), but I need to know is this task ever were solved before to avoid creating one more copycat. May be a standalone component or some other stuff like balloon.
In my limited experience the Annotation class does a very simple job. It sounds like you have some complex requirements. I do not know of a pre-built solution that addresses your requirements, and I would encourage you to go ahead and create your derived class.
There are click and drag objects, though, so definitely look into those.