It is very easy to make your own compass completely from scratch. I show you two different ways. First is based on an existing image of a compass dial that you can find online. Lets grab one from Wikipedia:
dialImage = ColorNegate@Import["http://upload.wikimedia.org/wikipedia/commons/e/e9/Compass_rose.png"]
Now lets define a function that draws compass needle in a given direction:
needle[x_,p_]:=Graphics[{
{Red,Opacity[.85],Rotate[Polygon[{{-.1,0},{.1,0},{0,1}}],-x,{0,0}]},
{Blue,Opacity[.85],Rotate[Polygon[{{-.1,0},{.1,0},{0,-1}}],-x,{0,0}]}},PlotRange->p]
And finally we can compose both to make an interactive compass:
Manipulate[
Overlay[{dialImage, Dynamic@needle[x, 1.2]}, Alignment -> Center],
{{x, Pi/12, "direction"}, -2 Pi, 2 Pi}, FrameMargins -> 0, ContentSize -> {340, 345}]
If you want to customize your dial, you can design your own:
dialGraphics=Graphics[{
{Brown,Opacity[1],Thickness[.005],Circle[{0,0},1.04]},
{Orange,Opacity[.2],Thickness[.07],Circle[{0,0},.96]},
Table[Rotate[Text[Style[k Degree,15],{0,.96}],-k Degree,{0,0}],{k,0,330,30}],
Table[Rotate[Line[{{0,.85},{0,.9}}],-k Degree,{0,0}],{k,0,350,10}],
Table[Rotate[Line[{{0,.89},{0,.9}}],-k Degree,{0,0}],{k,0,399,1}],
Text[Style["N",25,FontFamily->"algerian"],{0,.7}],
Rotate[Text[Style["S",25,FontFamily->"Algerian"],{0,.7}],Pi,{0,0}],
Rotate[Text[Style["E",25,FontFamily->"Algerian"],{0,.7}],-Pi/2,{0,0}],
Rotate[Text[Style["W",25,FontFamily->"Algerian"],{0,.7}],Pi/2,{0,0}],
Rotate[Text[Style["NE",25,FontFamily->"Algerian"],{0,.7}],-Pi/4,{0,0}],
Rotate[Text[Style["NW",25,FontFamily->"Algerian"],{0,.7}],Pi/4,{0,0}],
Rotate[Text[Style["SW",25,FontFamily->"Algerian"],{0,.7}],3Pi/4,{0,0}],
Rotate[Text[Style["SE",25,FontFamily->"Algerian"],{0,.7}],-3Pi/4,{0,0}]
},PlotRange->1.1]
You combine it with our needle in the same way as before
Manipulate[Overlay[{dialGraphics,Dynamic@needle[x,1.25]},Alignment->Center],{{x,Pi/12,"direction"},-2Pi,2Pi}]