I've tried it by cutting out the extra code and relying solely on the failure callback from the Foursquare method. It is not as responsive vs my existing code -- there is a delay of a few seconds due to the difference between me calling "startLocating" and "stopLocating" directly.

The code as I have it here is also functional and working, with room for more flexibility in the UI. I suggest we keep it as it is, as it's been tested, and it might not be as beautifully simple, but it's time I'd rather move forward with so we can get a working prototype up asap.