Sunday, November 28, 2010

OSMTrack 3.0

Today I have posted the next version of the OSMTrack to Apple. Sorry, it took me much longer to finalize it than originally supposed (due to some personal issues I had very few to no time to work on it since september). Though I don't pretend that the update "changes everything", but at least for how I use the App it's actually pretty close to that. The new things are:

  • Maps. The maps are offline, rendered on the device from the vector data, and downloadable in real time directly from the OpenStreetMap server. Offline means you don't depend on whether you have a connection, e.g. you see the map also on an iPod Touch with TomTom car kit (though I don't officially support the combination people have reported it to work fine). Rendered from vector data means that a lot more data will take a lot less space than if when you would use pre-rendered images, but don't start to download the complete world, it takes a lot of time to "compile" the XML vector data obtained from the server into the internal application format - try a small region first to get an idea of how long it takes on your device really. Downloadable in real time from the OSM server means that you don't need to wait for anyone to render new tiles for the changes you made in the map - just download the data and you have the most recent map.

  • iOS 4.0, multitasking, retina display are supported. You don't have to keep your iPhone's display constantly on to keep the GPS running. Though I find myself doing that nevertheless to see the map :)

  • iPad is supported natively.

  • A lot of other smaller changes and fixes, too many to list them all, especially because I don't remember them all anyway.


Though a lot of things are done now, some things are still to be done (I write it also for myself as a to do list to not forget):

  • Map download interface has some minor sharp edges and glitches. It's a bit slow - slower than those based on the routeme framework, but routeme was not used for a reason. However, overall there should not be any big issues with it, it seems to work quite stable.

  • In the map download interface I plan to visualize parts of the map already in the database (and how old they are). At some point I could also add an interface to delete parts of the map that are not used any more.

  • The map doesn't have any labels yet, furthermore point features (POIs) are not visualized yet as well. Both labels and points are in the database however, just not rendered yet.

  • Relations are unsupported yet.

  • Drop a pin in the logging state is still not accompanied by a visible effect. To be changed in the next version.

  • Since a long time already the are more options than just making a trace public or private. Again, it will be fixed soon.

  • Day/night mode (yes, I read reviews in the iTunes App Store).

Tuesday, July 6, 2010

OSMTrack at the SotM'2010

It is a long time ago I have posted an update to this blog. However, in the background a lot of work has been done and ongoing. This weekend (Saturday, 13:00) at the State Of The Map 2010 I'm going to give a presentation about the current state and discuss future plans for the OSMTrack. I hope you will not be disappointed :) See you in Girona!




UPDATE: Sorry, I posted the link to the slides on the OpenStreetMap Wiki, but have forgotten to update the blog. The slides can be downloaded from here.

Sunday, February 14, 2010

Documentation updated

Finally I have managed to update the application documentation. Now it corresponds to the version 2.5. I must apologize for my broken English, I have written the documentation mostly nights (you see it by the time the screenshots were made). Definitely it has not improved the text, but this was the only time I could find. I prefer to use the daytime for the development :)

Saturday, February 6, 2010

OSMTrack 2.5

In the recent time it happens that the development advances faster than I thought. And now I'm happy to present you yet another update. The application IMHO looks much more polished compared to the 2.0 and 2.1 versions. The only issue from the 2.0 which was not improved is the waypoint support, all other parts of the application have had some progress. Here are the improvements in detail:

  • Display points from all tracks in the vicinity. Basically, now you can see all track points you have logged previously and which are still on your iPhone. This is not exactly the same as having a complete map, but at least you can see whether you have already taken a certain path or not.


  • Current scale and current GPS accuracy value label. Finally I managed to implement writing text on OpenGL window (which appeared to be not too difficult at all - just re-using some example code, though removed due to different reasons from the current version of the documentation). Having the current scale value together with previous tracks on the screen is very practical indeed.


  • Asynchronous deletion of tracks and database file is optimized at exiting the traces management part if changed. As my tracks database grows (it is now approximately 30.000 GPS points at the moment) the deletion of tracks indeed has become slower. So I have changed the way the track deletion is implemented to asynchronous (in a separate thread - you don't need to wait for one deletion is completed to start a next one) and additionally separated the database file optimization from the track deletion. The database optimization is now done just once after you clicked the 'done' button in the track management screen.

  • French localization. Many thanks to Laurent Goussard for translating all but one strings used in the application and Manfred Müller for translating the last one.

Tuesday, January 5, 2010

OSMTrack 2.1

In the recent time I have received a couple of automatically generated bug reports (the new bug reporting system does work!) And in parallel I have been working on some new features. As the time getting short at the moment I have decided to post a small update right now and not implement more features first.

Fixed:
  • Fixed the OpenGL resource sharing bug. Actually I couldn't reproduce the issue, but I have found a bug that could cause the problem and fixed it. Let's hope the issue disappears.
Added:
  • Filter to exclude outlier points. A handy thing if you don't like to wait at the beginning for GPS to achieve the needed accuracy.


    I made 4 presets for the filter that from my experience suite the mapping needs. Here are the values from right to left. The "best" setting allows only positioning accuracy 17 and 9 meters (iPhone delivers only discrete accuracy values and jumps between them) - which if you look on an aerial image would lie exactly on the street - indeed the best quality. The "normal" setting adds the 49 meters accuracy that is more or less acceptable for mapping purposes. This is what you typically get in a city due to GPS signal reflections, narrow streets, etc. If the GPS quality is extremely bad, you can switch down to "approximate" setting, which will also add 76 meters accuracy values, but be prepared to see only approximate geometry. For mapping purposes you really shouldn't go below these values, best of all not below the normal value, but if you don't care you can of course also switch the filter off.

  • Database file is optimized after every delete operation. By default the database file doesn't change if you remove information from it. That means that it will indefinitely grow as you make more logs, and will not shrink even if you will delete them all. Somehow I always though that this may take long to optimize the database file. However, now I have made 2 different implementations for this feature: one asynchronous and one blocking. And it appears that blocking implementation also work fast enough. So I just go forward with a blocking version (the simpler the code the less is the probability that it has bugs).

  • Testing the response from the OpenStreetMap server after a track upload to ensure the track upload was successful. In the previous version I have written that I test pretty much every operation that may fail. Well, there was one more operation, namely if by uploading a track the OpenStreetMap server returns some error description in HTML format. I haven't tested this before, now I do.

UPDATE: The OSMTrack 2.1 was approved and is available on the iPhone App Store.

Thursday, December 10, 2009

OSMTrack 2.0 approved

The OSMTrack 2.0 is now approved and available for download from the App Store. Please upload your tracks before updating, the update process cleans up the database (read the previous post for more details).

Tuesday, December 1, 2009

OSMTrack 2.0

After a very long delay I'm finally happy to announce the next major OSMTrack update. The version 2.0 is a complete from scratch rewrite of the application. It contains a lot of visible as well as under-the-hood changes and improvements, the overall application design has been changed too. Now it is a sustainable end extensible platform that should be easy to add new features in the future.

The main visible changes are:
  • All new UI with graphical track view at the main screen. It is OpenGL based, you can scroll it with a swipe, zoom with a pinch, changes of current location and position accuracy are animated. The original scale is 1 pixel per meter (the scale ruler is to be added in an update, read below). To return to the original scale and position double tap on the view.



  • Multiple tracks done right - with tracks list editing, number of points for each track, graphical track view, etc.



  • Sending tracks per email added.


  • Preliminary support for waypoints. A new waypoint can be added by taping on the 'pin' button in the logging state. It currently lacks the visual confirmation (the waypoint is initially hidden below the cursor), just don't worry, you will see that a waypoint has been placed when you move further. Additionally it is currently not possible to give a name to the waypoint.


  • Support for both landscape and portrait modes throughout the application.


The less visible but important changes include:
  • Application-wide handling of errors: every single operation that may fail is now guarded, and if it has failed either the user is notified (non-critical errors) or a new 'inform the developer' hidden feature comes to the light that will ask whether you would like to send me an email crash report with detailed error information (critical errors).

And now a little bit about things that are not included into the current update (but are wishful to have):
  • First of all, some architectural changes have required to slightly change the database format. Though it was theoretically possible to implement a database conversion, I have decided to not do it for the current upgrade. It is nice to have but it would take too much of my resources to make it right (in a background thread with a notification when finished). For the next releases when I will already support background operations I will definitely do this, but not this time. Please upload your existing tracks before upgrading.

  • It is a little bit disturbing to not have the current scale and exact location accuracy (you can asses location accuracy when in the default scale 1 meter per pixel by looking at the accuracy circle - similar as in the Maps application, but you don't see the exact number) written on the display. The reason for that is that OpenGL per se does not include support to draw strings. To draw a string in OpenGL one has to do a little of magic with patterns. I have seen an example implementation integrated in a big framework, it is not that difficult, but as I don't use any OpenGL framework I have to do it myself. Then you will also see the current scale and exact location accuracy.

  • The current update still does not have a slippy map background though many other applications do. In the next quick step I'm going to enable you to see all the traces located on your iPhone for the current region - this is not exactly the map, but a step towards it. And in a future, yes, I'm going to implement local vector-based map management, not just bitmaps.

  • The current support of waypoints is called "preliminary", and it is. I'm very well aware that this is a desirable feature, and I'm going to continue developing it. Including textual waypoint names, images from camera and audio recordings for JOSM audio mapping.

The update is sent to Apple for review. I will inform you as soon as it is available.