Thursday, December 22, 2011

OSMTrack 3.0.3

Since the iOS 5.0 was available to general public in October some people have reported that the app crashes under 5.0 when downloading map. In fact, I could reproduce the crash myself, but the crashes were irregular and at different places. Unfortunately I had little time to really take care of the issue but I kept it on the back of my mind. This week I'm already on my Christmas holidays so I decided to look closer at the problem and indeed, Google is our friend, I could find where the problem lies. In addition I made a couple of fast changes according to comments on this blog. Here is the full list:

  • Fixed occasional crashes when downloading map under iOS 5.0
  • If no map visible the maximum zoom level limitation of 400 meters is removed
  • Re-gain the iOS 4.0 compatibility to support iPhone 3G
  • Reversed the order of the traces list: now it is latest on top

As usual, I will update this post as soon as the update gets approved. And hopefully next year will be less stressful and that I can really continue the development. Merry Christmas!

UPDATE: the version 3.0.3 was approved today. Just in time to tell you: happy new year!

Tuesday, October 11, 2011

OSMTrack 3.0.2

The iOS 5.0 will be available tomorrow, and similar to many other apps the OSMTrack doesn't work properly under iOS 5.0. The version 3.0.2 just repairs what is broken by iOS 5.0.

I know, a regular bugfix update is long overdue, and the wish list in comments to my previous posts is long, but somehow I'm still not quite up there... and I'm sorry for that! Hopefully, things will go better in some near future that I have a little bit more time.

Tuesday, December 21, 2010

OSMTrack 3.0.1 available

OSMTrack 3.0.1 has been approved December 16, the update should work fine now.

Tuesday, December 7, 2010

Oops... OSMTrack 3.0 adopted, there is a bug when updating the tracks database

OSMTrack has been adopted yesterday, however a small bug prevents the tracks database to update correctly. If you can, wait a little longer please, the fix is on the way. Alternatively you can remove the app from the iPhone/iPad and reinstall it from iTunes. This way you will loose all your tracks, but will be able to use the app immediately.

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.

Saturday, May 9, 2009

1.5.1 Update available

The 1.5.1 update is approved and available for download. Uploading to OSM shall work again now.

Wednesday, April 29, 2009

Traces do not appear on the OSM Server issue

As you may have heard, on April 21st the OpenStreetMap server has migrated to the new version of the API. Together with switching on the new API version, the old API version was switched off. This has brocken the application. Unfortunately, the issue was not really predictable nor testable in advance: in a normal production evironment if you have multiple applications working with your API, migration is normally stepwise, and the old API is not switched off immediately. For the OSMTrack it was not possible to test the new API before the switch was made: though it was online for some time already, before April 21 the new API was in a read only mode - not really useful for an application that only writes data. Furthermore, the switched-off API has returned error as text inside an HTML document - it's ok if you have the function integrated in a web application running in a browser, but pretty difficult to parse for other types of applications. That's why you didn't get any error messages but the tracks have never appeared on the server. The fix was simple, I incremented the API number and everything works again. However, before you get the update it has to go through the Apple review process, it may take a couple of days. I'm sorry for the issue and thank you for your patience.

Tuesday, March 24, 2009

Roadmap

I have been asked what my next plans are, especially in comparison to Track'n Trail application. Well, right now I'm indeed working on implementing a graphical track presentation similar to Track'n Trail. If everything goes well, OSMTrack should become almost on a par in functionality with the Track'n Trail app soon (it will not support adding waypoints - they are of no use for the Open Street Map contributing; and sending tracks per email will possibly be added only with iPhone OS 3.0).

For the timing it is difficult to say right now. I have started OSMTrack with very simple architecture, so to say, let's try it and see what emerges out of it. Now I'm trying to develop a sustainable and extensible design, capable of doing much more then it does now. Also I 'm using OpenGL - technology which is new for me, I need some time to get familiarized with it, especially because OpenGL ES implementation of iPhone needs some special approaches different from OpenGL on desktop.

For the slippy map, this will be the next step. However, none of the existing frameworks - route-me, CloudMade iPhone Maps Library and a new iPhone OS maps framework suffice my requirements. In fact, I've even created a sample application branch using route-me framework, but it was slow and had bad GPS reception (it seems GPS reception quality depends on how busy the iPhone is). My requirements are simple - tracking shall work also in places where there is no network coverage. For this I need maps being rendered from local vector data (of course, it is also possible to use pre-cached bitmaps, but read further). This is why I'm doing it with OpenGL. Maps will be done in multiple steps, starting with street map only - no colorful areas like forests, lakes, etc. (currently OpenGL ES implementation on iPhone doesn't provide GL Utility library helping to draw arbitrary poligons, not just triangles).

And the final step on the OSMTrack roadmap is map editing. At least for the map editing I will definitely need local raw vector maps. I have not even started thinking on how it may look like, but still I'm trying to design tracking functionality so generic that it shouldn't require changes even when map editing is implemented. This is the difficulty.

Tuesday, February 3, 2009

OSM4iPhone gets a web site

As you may have noticed, there is a new menu nearby the blog title. I have finally found time and made OSM4iPhone own web site. As the OSMTrack application advances, new features appear that need to be covered in the documentation. However pushing the complete documentation as blog posts seem to be bad both for me - it gets more difficult to track comments if pushing so many posts at once, and for you - you need to dig in to find the help.

For now the web site consists of a title page and the promised updated OSMTrack 1.5 documentation. But I also plan to add an FAQ page to explain what was my original idea of how I the app is to be used, and why certain features are there and others are not.

Thursday, January 15, 2009

OSMTrack 1.5

I have yesterday submitted the OSMTrack 1.5 update to Apple and they were so fast that just a few hours later the update was online. Wow! I haven't expected this. This is why this announcement comes after the update is in fact available.

A lot has changed in the application since the last update. In fact, I almost have rewritten it with better design, a lot of optimisations, etc., etc. But first things first.

The major visible change is the support of multiple tracks. Yes, now you can collect as much tracks as you want without bothering to upload them immediately (though you should write the tags and description to not forget where you were). This is extremely useful if you don't have network coverage (or it is expensive - not everyone has unlimited contracts). Or if you don't have time to wait until upload finishes. To support multiple tracks the complete storage of tracks has been re-implemented and now uses SQLite database. It has been done to support future graphical presentation of tracks (and later maps). Even now, it has an advantage that you can store as much tracks as you have place on your iPhone - almost unlimited. Of course, you can also delete tracks by swiping left or right over the track title similar to how deleting of emails has worked in the first version of the Mail application before "Edit" button has appeared (I will also add the Edit button in the next update).

The next visible improvement is the "Slide to stop" control in place of the stop button. Now I always put my iPhone in my pocket when logging and don't worry about occasional buttons presses.

Now "invisible" changes. I have discovered that the less resources the app uses (mainly the less memory it uses) the better and the faster GPS fix I get. So I have made a lot of internal optimizations in the software. Now with more features it uses almost 200kB less memory than the original version. I have got rid of XIB-based views (pre-compiled user interface stored separately from the application) and rewritten the application to create the UI programmatically. All images used in the application are now when possible scalable and always optimized. Everywhere where only possible I have tried to avoid storing data if I can recreate it fast.

I have not changed the compass implementation though I have seen complaints that it doesn't work well. I tested my implementation and the new Apple-own implementation against a normal magnetic compass. Both implementations are equally bad. Well, not equally but bad. Apple's implementation is much more conservative than mine, the compass needs significant time to start showing any direction. However, I have seen Apple's implementation sometimes showing me consistently wrong direction (in fact, South was where North should be). My implementation is more sensitive, it starts showing some direction almost immediately (sometimes even if you don't move). Of course, in my implementation the direction is not very accurate and my implementation is more prone to errors. But I have seen (almost) correct results equally often in both implementations. I think a much more work has to be done to get significantly better results. I will have to do this work later when I have a graphical map as a background, so I just kept my implementation at the moment since I can easier change it later.

I will post an updated version of the user guide in the next days.

Sunday, January 11, 2009

App Store reviews and 2 month results

Recently I got a bad review on a german App Store from a guy claiming he couldn't figure out how to use the app.

Ok, I know there are people who never visit support websites and never read user manuals. I can live with it. Nevertheless, I tried to make the application so that it just cannot be used wrong. Usability is one of my main goals. But have I really achieved it?

If you like the OSMTrack and think the application is actually good, please take a little bit of your time and write a review on the App Store. Reviews help sales a lot. Right now, except for just two reviews on the german App Store, I haven't seen any other reviews for any other country in the world, though I have to admit, I checked only a couple of countries where most copies were sold. By writing a review you will help me to further develop the application.

I can also add that in two month there were sold approximately 2 to 3 hundreds of copies worldwide. Together with approx. $0,7 revenue per copy (depending on the exchange rate) this means that I shouldn't get rich any time soon, don't worry ;) Additionally, I haven't seen any of these money yet, as Apple bundles them per region (like US or Europe) and postpone the payment until the result reaches $250 (sorry Apple, I hope this was not your commercial secret). Anyway, thanks a lot to everyone who bought the application! This is actually great and I haven't expected there are so many people actively contributing to the Open Street Map, considering the small market share of the OSMTrack multiplied by the fact that not everyone owns an iPhone 3G.

Tuesday, November 18, 2008

OSMTrack 1.0.1

I have just submitted an update for the OSMTrack application to the App Store. It fixes some minor issues I have found in the recent days:

  • Faster upload. Writing the documentation it comes to my mind, that I must be transmitting the log twice: first time just at the beginning and second time after an authorization request is received. Inspecting the documentation and after several attempts it has appeared that, in fact, iPhone OS is optimized for downloading things, it will always send the first request without credentials and supply credentials only if required by the web server. Fortunately, there is a way to supply custom HTTP header fields, and I used this to add a manually created authorization header. Now the log is transmitted only once, upload is twice fast.

  • Upload indication changed. Since now there is no authorization step inbetween indicating that upload is 50% done, progress indicator makes no sense any more. I have changed it to an activity indicator (you know, the rotating thing).

  • Fixed GPX log format (time stamp is now UTC). This was a smaller bug from my side - I have written times in current time zone instead of UTC as required by the GPX standard.

  • Fixed incorrect presentation of tracks in OSM map editing mode. I have originally written timestamps to the log very precisely - up to fractions of second (in "HH:mm:ss.SS" format to be exact). It is inline with the GPX specification, and such logs were indeed correctly understood by the API. However Potlatch has shown these logs as if the first point were somewhere far away. This was actually more difficult to find than to fix: timestamps are now written with up to 1 second preciseness.

  • Same positions are written in log just once. If you have to stop and wait for a moment, the 1.0 would keep writing the same coordinates into the log all the time. This increases upload time, but is of no use for map creation. Now, if you don't move, coordinate updates are shown on the screen (I hope to implement filtering at some point in time, I will need the best timing there), but not written into log.

  • More detailed error reporting for location errors. You shall never see it, actually. But in case if something is totally wrong, e.g. you have an iPod Touch or you are in a flight mode, you will now get a correct error message.

  • More robust in low memory situations. Again, you shall never see it. The application is very careful of how it uses iPhone's memory. However, if other applications on your iPhone appear to have memory leaks, the leaked memory is not automatically cleaned when application exits. Thus it may appear that my application may be the unlucky one that encounters low memory situation and I should take care of it.


UPDATE: The update is available on the App Store since November, 20th.

Sunday, November 9, 2008

Battery life

As you know, to save battery iPhone goes to stand-by if no touches have been made for certain time. Unfortunately, in stand-by a running application is sent to sleep as well, it is not able to perform any operations. Fortunately, it is possible for an application to switch off the stand-by timer (though if you press stand-by button iPhone will still go to standby).

For the OSMTrack application, I do switch off the timer during the logging phase. Obviously, it has a disadvantage to waste your battery very fast (I have not measured, but others report something like 3 hours). Be warned.

UPDATE: I have tested it yesterday, and it took me approximately 2 hours to go from full battery to below 20% (I got low battery warning). So best of all, connect your iPhone to some power supply when logging...

Saturday, November 8, 2008

Available on the App Store!

The application has been approved and is now available on the App Store. (On iPhone go to the App Store and search for OSMTrack.)