This is a modified version of the Reverse GeoCache Project hosted at adafruit, modified to include require the recipient to find several locations before the box can be opened.
There's also a separate class for locations called LatLng that stores points in Degrees/Decimal Minutes and includes a great circle distance calculation using the Haversine formula.