ToDo: ? - * update the coordinates more correctly (i.e. if the accuracy jumps from 10 meters to 1000 meters, be careful about the update. ? - * distance calculations are borked? Check into this. - sun/moon positions displayed - battery life -- what (more) can we do about this? - add a "trail" type of logging, and distance tracking system on how far you have moved since going to a cache. - contact the iTrail guy about having our apps work together, could be interesting. Is that the best app for partnering with for this though? (Why would we do this? Maybe make it so that geopher and iTrail had buttons to jump between them if the opposite apps were found on the phone?) - compass rotation tweaks. Make it better. - updates more smooth when faster, more frequent when walking. (tied to 2.1?) - Saving the web view between sessions - check into auto-zooming of web views - check into wap.geocaching.com preference option. - look at adding a google maps pane into the full version - see http://code.google.com/p/iphone-google-maps-component/ for details on this. - Fix the skins to be "perfect". - add a skin that works well outdoors -- without the brightness being up super high and killing battery life. - black and white and big big text. - Keyboard. Why doesn't apple have a numpad with a period??? Bah. - Additional features that I'd like to see, but will only happen if I can find a way to work around some issues: - A google map directions option on top of the pin drop that is there currently. - An option to search by different criteria on geocaching.com - GPX direct downloads in geopher lite. saving custom waypoints with notes -- make this a priority in the full version! Additional ToDo: - allow custom notes for caches - allow geotagging photos with uploads to geocaching.com - need full cache list for this probably, or else that's a lot of typing on the iPhone for someone. - links to: - google maps integration for finding (w/ directions) - geocaching.com maps around you - geocaching.com PQ setup page - geocaching.com advanced search? - find by keyword - login page - logs page - ** Find out if clicking on a GPX file in safari can be directed to send that file to geopher lite instead. - Add a "closest geocache" button.  - may have to do the HTTP request ourself and parse it.   - can we get a GPX file via javascript? (And not worry about the terms and conditions?) Check into the GPX download button. - find out about accessing email -- looks like we can't. - consider wireless sync for GPX/LOC files. - consider slimming down the geopher demo to be closer to a simple navigation screen would be and releasing a free version. - vibrate when nearing the cache. (Depends on speed and time to cache probably, allow for a sound alarm instead as well?) - fix update events to not hog resources, but to be intelligent - fix up the code to be less hacky. - what types of caches are supported? - multi-cache support would rock. - puzzle cache support? How would this work? - waypointing? - geohashing? √ - * Add a geo:// or geopherlite:// URL support to get lat/lon/etc from other apps. √ - * Accuracy changes and the compass need to be dealt with. (store accuracy changes with current/previous updates) √ - * Accuracy meter on the target screen -- how do we elegantly deal with this? √ - loading a local HTML page in the web view (splash screen) instead of auto-loading the geocaching.com search. √ - adding a toggle in the prefs to allow turning on and off the auto-search functionality √ - change buttons to be UIBar buttons and such to look nicer. √ - add the "more" pane to possibly have additional links? Swap out lat/lon for log? etc. √ - The target selection screen still could use some work! √ - re-add the log button. √ - * check into google maps link via web view. -- missing a delegate or something? √ - * compass rotation - do this with the skins additions? Skins: - text - all can be shown/hidden - choice of - font - size - x/y position - location (lat/lon) tags - choice of format. (decimal, HH MM.MMM, HH MM SS) - HH MM SS input parsing as well would be nice! - location labels - x2 custom text tags + labels for them. (need type) - speed - bearing - heading - distance - session time? - next location (for multi-caches?) - Graphics - compass rose - allow for new position (default is centered, 200x200 pixels) - arrow - allow for new position (default is centered, 200x200 pixels) - background - next location arrow? -- make the current location arrow fade out and next location arrow fade in as you approach your target. - custom button graphics (used if they exist instead of text for buttons) - allow resizing and positioning of buttons. - mark a previous location and return to that location as a target. Wouldn't be hard, would there be demand for this? ***** You can control the screen going dark with idleTimerDisabled so it's not forced to check finger taps. You will get a applicationWillResignActive and applicationDidBecomeActive which may be where you want to check. These last ones are in the UIApplication Delegate methods. ***** I've yet to use NSUserDefaults to store any data, but I can see how they would be useful. A prime example of using NSUserDefaults is how the CrashLanding app provided by Apple uses them to store high scores. For all my development thus far, I've been using serialization (NSKeyedArchiver & NSKeyedUnarchiver). They're easy to use and everything makes sense. I've played around with Sqlite some, as well. However, I haven't had any luck making anything work. Plus, my programs thus far only store a minimal amount of data and I haven't truly needed a database. *** google maps examples from the web and apple's documentation: http://maps.google.com/maps?f=d&hl=en&geocode=&saddr=N+40%C2%B0+5.457+W+111%C2%B0+37.008&daddr=N+40%C2%B0+5.332+W+111%C2%B0+35.918&sll=37.0625,-95.677068&sspn=40.545434,66.972656&ie=UTF8&z=15 http://maps.google.com/maps?daddr=San+Francisco,+CA&saddr=cupertino">Directions my attempt: http://maps.google.com/maps?geocode=&saddr=N+40%C2%B0+5.457+W+111%C2%B0+37.008&daddr=N+40%C2%B0+5.332+W+111%C2%B0+35.918">Directions ******** XML parsing example: http://forums.macrumors.com/showthread.php?t=499671 I'm a n00b to iPhone programming and found it a real PITA to get an XML parser working. After piecing together things from various Google searches, here's what I got to work: Code: #import #import - (void)parserDidStartDocument:(NSXMLParser *)parser{ NSLog(@"found file and started parsing"); } - (void)parseXMLFileAtURL:(NSString *)URL //URL is the file path (i.e. /Applications/MyExample.app/MyFile.xml) { //you must then convert the path to a proper NSURL or it won't work NSURL *xmlURL = [NSURL fileURLWithPath:URL]; // here, for some reason you have to use NSClassFromString when trying to alloc NSXMLParser, otherwise you will get an object not found error // this may be necessary only for the toolchain NSXMLParser *parser = [[ NSClassFromString(@"NSXMLParser") alloc] initWithContentsOfURL:xmlURL]; // Set self as the delegate of the parser so that it will receive the parser delegate methods callbacks. [parser setDelegate:self]; // Depending on the XML document you're parsing, you may want to enable these features of NSXMLParser. [parser setShouldProcessNamespaces:NO]; [parser setShouldReportNamespacePrefixes:NO]; [parser setShouldResolveExternalEntities:NO]; [parser parse]; [parser release]; } - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ NSLog(@"found this element: %@", elementName); } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ } Some other key points: - having a bad XML file will also cause your parser to not work. This means unclosed tags, or not having the xml declaration at the top, like: "" - also, you need to include some other stuff when you compile. Otherwise it will compile just fine, but won't parse anything. This is my include list: "-lobjc -framework CoreFoundation -framework Foundation -framework UIKit -framework CoreGraphics -framework GraphicsServices -framework IOKit -framework WebKit -framework LayerKit -framework OfficeImport" IOKit through OfficeImport seem to be necessary. I tried to leave one out and it just doesn't work - finally, I'm doing all of this with the toolchain, so things might be different with the genuine SDK, but this works for me. Good luck! Also associated: NSXMLParser *parser = [[NSXMLParser alloc] initWithData:DATA]; ******** /end XML parsing example: ***** SQL Lite tutoral: http://www.devmyiphone.com/2008/08/08/iphone-sqlite-tutorial/ code for an alert: NSString *message = [NSString stringWithFormat:@"The application received a request to open this URL: %@. Be careful when servicing handleOpenURL requests!", URLString]; UIAlertView *openURLAlert = [[UIAlertView alloc] initWithTitle:@"handleOpenURL:" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [openURLAlert show]; [openURLAlert release];