Acacia Web Site
You may have noticed that you are viewing the Acacia news on a different domain - SportsDB.com. We have leased a server to support a new GeoFence app and have taken advantage of the infrastructure on this server to run a Joomla server. This allows us to more simply provide news and updates on products.
The original web site can still be found here but will progressively phased out.
The original web site continues to host
- The image and vector based map servers. These map servers and web site now use a HTTPS front end.
- The news feed for KayakNav
- Download pages for KayakNav and StoreShotMaker.
KayakNav Version 2.5
We are getting closer to releasing KayakNav for iOS 9.3. This version of iOS was chosen so as to ensure compatibility with some of the older devices that will cannot be updated to iOS 10. This release is primarily an update to iOS 9.3, but required some changes to support SSL connections to the map server. This is an interim step in moving forward to Vector based maps as detailed in the "KayakNav Version 3.0" article.
- Implementation of SSL front-end for the existing image based map server - completed.
- KayakNav 2.5 is now running with the HTTPS map server, so it should be accepted into the App Store.
- Next step is testing and upload.
iOS Development Challenges
The development of KayakNav 1.0 and 2.0 has involved a huge effort, with nearly 1 million lines of source code. It has required development of components covering:
- Implementation of a image based mapping server.
- Complex spatial and temporal calculations for targeting, ETA estimation and tide calculations.
- Real-time loading and caching of image based map times.
- Live map rotation on a non-square screen meaning that the view-port is smaller than the loaded map.
- Overlaying of routes, annotations and live data feeds with live estimation of ETA etc.
- Translation and rationalisation of telemetry and other statistics for Imperial, Metric and Maritime as set via preferences.
- Interpretation and optimisation of GoogleEarth files and storage in a Sqlite database.
- Recording of statistics and reporting via email.
- Battery conservation measures that include limiting screen refresh, powering down bluetooth, GPS and other facilities and position estimation.
- High resolution monitoring of accelerometer data to estimate paddling cadence, power, energy and force profiles.
- Heart rate monitoring via bluetooth and integrating this data into the logged data stream.
- A complete simulation infrastructure for location, bearing, heart rate and other live inputs.
- Navigation module to handle way point targeting and course tracking.
- Handling of interruptions from other apps.
- Automated start/finish line detection and emailing.
- Background processing for route loading, tile loading, tide calculations, paddle stroke auto-correlation and more.
- Off-line caching of map tiles for disconnected operation.
On-going the development has been subject to the following constraints:
- iOS Changes
- A number of core facilities have been depreciated in iOS 9.3, meaning that significant portions of code must be rewritten. This has now been completed and testing has commenced for the next release.
- Apple has decided that all HTTP web addresses are now insecure and cannot be accessed by mobile apps. This requires server side changes to present a HTTPS URL for all facilities including help screens, news feed and most importantly the map service. Implementation of SSL/TLS server components is almost completed.
- App Store Changes
- Apple is reviewing all of the Apps in the App Store and removing those that have not been updated for a long time, have problems on the latest (ever changing) iOS version, or no longer comply with the latest (ever more restrictive) publication guidelines. This means that KayakNav will need to be updated to the latest version of iOS soon, and the vector maps added in a later version.
- Apple's review times for apps is reported to be much quicker than the 10-15 days for the last release of KayakNav, so this should improve things.
- Xcode Changes
- Apple has changed the way certificates work which has required multiple fixes in the code. These are now complete.
- The way the linker works has changed in order to reduce the size of deployed binaries. Some libraries must be changed from "dylib" to "tbd" or moved to linker options.
- The compiler continues to be more picky about type casting and requires changes to code.
KayakNav Version 3.0
We have started preparing for the release of KayakNav 3.0 which will feature more efficient vector based maps. We now have a Vector map server covering the entire planet in place to support development of version 3.0. Preliminary testing indicates dramatic improvements to map rendering speed and memory footprint on the device.
This vector based map server does not require server side tile rendering and caching that is in place for the PNG based map tiles, so server side processing and downloads will be faster. The trade-off is that rendering of maps must be performed on the device using graphics hardware, so best performance will be achieved using the latest iPhone or iPad hardware.
The move to Vector based maps has not been straight-forward and work is on-going. Unfortunately the MapBox API used in the latest "Vector" version is not as "Open Source" as MapBox would have you believe. To use it, you can't use your own vector server and it appears that a subscription to MapBox is required to use the mapping facility.
Please see the Map Server article and check out the performance improvements by clicking some of the links like "Paris" etc. If viewed using your mobile device, this will give an indication of expected KayakNav 3.0 map performance.
- Implementation of a new Vector based map server and served via the SSL front end web server - completed.
- Upgrade of source code to the Vector Maps API - in progress.
Please check back here for updates.
Image Map Server
The first version of KayakNav downloaded and cached maps for various paddling routes from this server. When a map view is requested, the code in the application automatically loads individual PNG files from a caching database on the device. If the required images are not available and an internet connection is available, they are requested from the configured map tile server and stored into the internal Sqlite database. The tile server renders and caches these PNG files on the server then hands them down to the device when they are ready. This process is generally very fast, but when many requests for new map regions arrive, it can take some time (seconds) for these to render and be returned.
The use of pre-rendered image based tiles made it impossible to provide different map styles in KayakNav without doing client side image manipulation or rendering an entirely different set of night mode tiles. The rotation of maps in KayakNav was particularly difficult and required map tiles much larger than the visible screen area to be put on a image and that image rotated on the device.
Page 1 of 2