I haven't seen anything like that myself. However, I'd encourage you to try creating it yourself. It's not a terribly complex task as custom controls go, but it will be a good challenge for you. Working through it will also teach you a lot about how custom UI is done in Cocoa.
To get you started, the basic steps are:
1. Create a custom NSControl subclass, called say CompassView
2. In that class, override drawRect: and use AppKit and/or CoreGraphics drawing calls to draw your compass.
3. Override the NSResponder mouse handling methods (i.e. at least mouseDown
, and in your override determine which heading the mouse down point is on top of.
4. Design a way for the control to communicate that a heading has been selected. There are multiple ways to do this, but what I would take advantage of NSControl's existing target/action mechanism, by simply calling -sendAction:to: anytime a new heading is selected. Along with that, expose the currently (i.e. most recently) selected heading as a property so it can be retrieved from the sender argument in the action method.