Posted by: benismobile | June 18, 2011

Architectural Styles For Augmented Reality for Smartphone

A small paper on architectural styles for smartphone based AR was submitted to the 3rd International Standards Workshop for AR. Lots of great papers to digest here.

Below is an extract showing the “Gateway” architectural style used by Layar, Junaio and Sekai Camera.

Posted by: benismobile | April 20, 2011

JISC Observatory Augmented Reality Report

My report on Augmented Reality for Smartphones is now open for comments here on the JISC Observatory blogSome of the content has previously been previewed on this blog.  Aimed at developers and content publishers who want to take advantage of the latest developments in smartphone and augmented reality (AR) technology, the report has an overview and comparison of different AR “browsers”, frameworks and publishing platforms. It also discusses  emerging standards and usability issues and anti-patterns that developers should be aware of before designing an AR experience. And there is a  section reviewing existing applications of AR in education that should inspire educators to give AR a bash. There is still a bit of time to incorporate some changes to the report so please do leave comments either here or on the JISC Observatory blog.  If you are interested you might also be interested in the interactive session I’ll be giving on this at the Institutional Web Managers Workshop in July.

Posted by: jenniefletcher | March 3, 2011

OpenLayers Mobile Code Sprint

Last week EDINA had the opportunity to take part in the OpenLayers Mobile code sprint in Lausanne. A group of developers from across the world gathered to add mobile support to the popular Javascript framework.

After a week of intensive development we have been able to add a number of new features allowing OpenLayers to function on a wide range of devices, not only taking advantage of the touch events available on iPhone and some Android mobiles to allow touch navigation, but also enabling the OpenLayers map to be responsive and useful on other platforms, or even unexpected devices!

Jorge Gustavo Rocha and myself worked on adding support for HTML offline storage. Covering storing maps and feature data on the users local browser using the Web Storage and Web SQL standards. Here is the example sandbox which allows the user to store map tiles for the area they are viewing, which are automatically used instead of downloading the online image when possible.  More details on this and other features added can be found on the OpenLayers blog.

I have to say I wasn’t sure what to expect, and I have certainly found it rewarding contributing to OpenLayers and working with such a dedicated and talented team of developers. Far more was achieved than I would have thought possible in such a short space of time. Very inspiring stuff!

Posted by: benismobile | February 3, 2011

Caching and OpenLayers Mobile Code Sprint

We think that a key feature for a mobile mapping application is the ability to view maps offline. One of our key use cases, a educational field trip exercise, requires access to maps in locations where network connectivity might be poor or non existant. Having access offline also widens the kinds of device we can use to include WiFi only devices such as the iPod Touch and no SIM iPad tablet.  Threfore we’ve been working hard over the last couple of months on working out how we can cache maps.  We’ve made alot of progress on this, developing the caching ability in the TouchMapLite library to be more robust and work with our WMS mapping server.

This is possible in a web app environment thanks to 3 seperate  HTML5 initiatives that assist web developers in caching data listed below.

It’s quite easy to get these three flavours of caching mixed up (I’ve done so myself), so one of our engineers has blogged on the subject, explaining what each one does and offering some very helpful hints and gotchas. The first post focuses on the Application Cache, with similar posts on SQL database and Web Storage to follow shortly [update 22 feb 2011: Our engineer has now blogged part 2 ( web SQL database) and part 3 (Web Storage) – some very useful comparisons.

We are going to share the techniques we’ve developed for caching maps during the upcoming OpenLayers Code Sprint in Lausanne later this month. It’s really great to see the OpenLayers development community tackling mobile in earnest this year. Respect to CampToCamp and other sponsers for organizing and sponsoring the event. Geomobile is looking forward to sharing progress with its readers!

Posted by: benismobile | November 23, 2010

Comparing AR Browsers

I’m currently researching capabilities of augmented reality browsers as part of a future JISC Observatory Report on Augmented Reality In Smartphones, aimed at helping developers and content publishers working in Higher Education exploit this technology to create novel and exciting new learning experiences. If all goes well this report will be in its final stages in the New Year.

I’ve started off by developing a classification of augmented reality browsers that aims to assist developers and content publishers to navigate the confusing landscape of applications and frameworks that has emerged as augmented reality technology becomes increasingly ubiquitous. There are some existing taxonomies of augmented reality applications in general, such as Papagiannakis et al. , but as far as I know there is no existing classification of the browsers and application frameworks recently made available on smartphone devices.

The table below shows the results of several days research trawling through documentation and experimenting with the browsers on our development phones (iPhone 3GS and Android Legend).

classification of AR browsers

AR browsers

A full explanation of the classification criteria I’m working with would take several blog posts, so you’ll have to wait for the JISC report, but below I give a very brief summary and report some early findings. it will be interesting to get feedback from members of the geo mobile community on whether the classification ( alway contentious) makes sense to them.

Criteria 1: Registration and tracking

GPS/sensor yes / no
Markerbased yes / no / API / src / plugin
Markerless yes / no / API / src

Criteria 2: Built in User Actions

Post text user can post a text message to the current location / orientation of the handset. Often users can choose a 2d icon or sometime a 3d icon to represent the message in the browser reality view.
Post image user can choose an image already in the handset gallery to the current location /orientation of the handset.
Post snap user can take a picture using the device camera and then upload the image to the POI server
Post 3d user can select a 3d model and make it viewable to public or friends at the current location orientation of the handset.
WebView the developer can offer arbitrary web based services  to user through an embedded web viewer.
Social the user has access to social network platform including common actions such as follow, invite, comment etc. Typically user generate content such as posting text messages can be configured so that only friends in the users social network can see the content.
Visual Search user can take photo of an real world object such as a book cover and obtain information about the object using image recognition technology

Criteria 3: Publishing API

Crowd crowd sourced content is published by regular users using facilities available in the browser itself, Typically, images, audio clips and text as well as a predefined gallery of 3d objects are available for crowd sourced content publishing.
Open [key] Platform provides an API that allows developers to publish their own data. For open keys there is no registration fee for developers and no practical limit on the users access to the published content. This also includes platforms that allow developers to publish their content without any key or registration at all.
Commercial [key] A publishing API is available but some kind of fee or restriction on use is applied by the platform provider.
Bundled data is bundled into the app itself. This assumes developer has access to the browser source code and can therefore create and publish their own apps for download.

Criteria 4: Application API

Open [key] A developer can reuse browser code and APIs to create their own version of the browser and are free to publish the application independently of the platform provider.
Restr[icted] A developer can create their own version of the application but license restrictions apply to publishing the app.
Com[mercial] a commercial license is required to develop applications using the framework/API.
Custom[ize only] The developer cannot add any real functionality to the application but the visual appearance can be changed and optional functionality switched on or off.

Criteria 5: AR Content

2d POI are represented by 2d image icons, text or bubbles. Typically the icons can be touched to activate an action ( more information view, map view , directions, call etc.)
3d a 3d object can be superimposed on the reality (camera) view in 3d space to give the impression that the object is part of the natural environment.
3d-anim[ated] a 3d object is superimposed on the reality (camera) view and parts of the model can be made to move using 3d animation techniques.

Criteria 6: [P]oint [O]f [I]nterest actions

Info ability to link to a web page with more information about the object
Audio ability to play a sound clip
Video ability to play a video clip
Music play music track on device music player
Map/Take Me There see POI on as pin on map with option to show route from current location to POI location.
Search [shop] ability to find search results using search engine or shopping channels
Call can click button to make phone call to number in POI response
Email can write email message to email address provided in POI response
SMS can write SMS text message to mobile number provided in POI response
Social various social network actions such as comment, share, profile
Events allows developer to define their own events when user interacts with POI

Criteria 7: offline mode

Online only application requires a network connection at all time to work properly
Offline application also works offline – data is updated by obtaining a new version of the application
Cached layer Channels or layers can be cached while online.

It’s possible to view the criteria in the table from the perspective of the user ( I want to do cool stuff) and from the perspective of the developer ( I want more control over want user can see and do). To visualize this I scored the browsers against user and developer preferences, using a fairly arbitrary scoring system against the criteria discussed above and adding an extra “build quality” criteria to score the user axis and “developer tools” criteria to the developer axis to get the bubble chart below. The size of the bubbles represent the corporate strength of the organisation behind the browser. As the AR browser game is a winner takes all land grab, having some strong venture capital or solid private investment is not an irrelevant consideration in choosing a tool that meets your needs. It goes without saying that charts such as that below need to be taken with a pinch of salt. It all really depends what your needs are as a developer or content publisher.

What we left out

We did not include the following browsers in our evaluation:

SREngine: this looks like a promising framework for performing visual search but appears to be focused on the Japanese market for the moment. As a result we struggled to get enough English language documentation to fill in our classification matrix and also could not get the app from the UK AppStore.
GeoVector World Surfer: World surfer provides an appealing browser that allows you to point the handset and discover POI. There is a reality view but this only works on a single POI the user has already selected. There does not appear to be any developer access to either publishing or application framework at this point.
AcrossAir: Is an AR browser that is sold as a marketing tool to content providers. The vendor controls both publishing and application development so there is not much scope for developers to utilize this platform unless they have a marketing budget.
RobotVision: One of the most impressive independent offerings. But there are no APIs for developers and the project seems to have stalled with no recent updates on the AppStore.

Posted by: benismobile | September 27, 2010

OpenStream WMS service for

A new web mapping service is now available that makes the Ordnance Survery Open datasets available through WMS. The service offered by EDINA is initially available to anyone with an “” email and requires a simple email activated registration. Other than that, there are no restrictions on use. The website includes an example mapping app using OpenLayers and isntructions on how to use the service with Google Earth. We also created a mobile app using this datasource, as described in a previous post on the TouchMapLite interface.

the data products available are:

  • GB Overview
  • Miniscale
  • 1:250000 Colour Raster
  • Vector Map District Raster
  • OS Streetview

you can register for the service (initially email addresses only) here.

If you would like to find out how you can use Digimap OpenStream with desktop GIS you should read the Go-Geo! Blog.

Posted by: benismobile | August 10, 2010

Walking Through Time festival app

A new version of the “Walking Through Time” app that we’ve had some involvement in has just been launched as a free app on the App Store.  The app makes a range of historic maps sourced from Landmark and The National Library of Scotland available on your iPhone so you can see how the part of town you’re walking through looked in the past and has changed through time.  A nice new feature is the opacity slider that lets you change the opacity of the comtemporary (Google arial) layer to reveal more or less of the historic map. Some historic tours have also been provided with help from Edinburgh World Heritage and Margaret Stewart. The app was developed as aprt of the JISC Rapid Innovation Programme with the Edinburgh College of Art, University Of Edinburgh and EDINA as proejct partners. The app only works for maps  in Edinburgh at the moment.

Posted by: benismobile | July 16, 2010

Mobile Scoping Study Report

The final report for the Digimap Mobile Scoping Study is available. Comments greatly appreciated!


Posted by: murrayhking | July 16, 2010

touchMapLite framework notes

Having looked at openlayers, we had problems with performance on mobile devices.  A latency problem especially  when dragging/panning the map.

A new framework has recently appeared that addresses that issue called touchMapLite.

touchMapLite screen shot from iphone

touchMapLite screen shot from iphone

Its very lightweight at (35k) and based on the pano.js library
Its in the early development stage but we were impressed with it.

Conversely, Openlayers 2.8 is about 700k, although you can optimise this by using a build script to specify only the javascript files your setup requires. For us, that typically reduces our openlayers lib to about half the size.

Of course you are losing a lot of potential functionally when compared with openlayers and it has great documentation. If you just care about rendering performance and maybe basic use of markers then this small library might be the way to go. There isn’t much in the way of documentation with touchMapLite although there are some helpful samples that come with the source.

Another caveat is the type of map source you are displaying for example one source we are using is in British National Grid EPSG:27700 projection with units in meters.

So we had to override some fairly low level functions to cope with this projection. We had to use our own javascript utilities (the coordamatic library) for unit and projection changes to get it working eg

projection changes


latlon2pan: function(lat,lon) {
//use uk national grid
var coords ;
coords = this.natgrid.toLocalSystem(lat, lon);

var northings = coords[0];

var panNGLat = 1-(northings/this.EXTENT);

var eastings = coords[1];

var panNGLon = eastings/this.EXTENT;

return {x: panNGLon, y:panNGLat};

NOTE. So the actual units range required by the underlying rendering engine are 0.0 – 1.0

so x=0.5,y=0.5 would give you the centre of the map near equatorial guinea.

unit changes


resolutionAtZoomLevel: function(zoom){

return this.initialResolution / Math.pow(2,zoom);
pixelsToMetersAtZoom: function(ptPixels, zoom)
var resolution = this.resolutionAtZoomLevel(zoom);
var ptMeters  = ptPixels * resolution;
return ptMeters;

//create the wms bounding box
//convert google y to TMS   =  (2**zoom - 1) - tygoogle

var ytms  =(Math.pow(2, zoom) -1) – yIndex;

var bbLeftMeters = this.pixelsToMetersAtZoom(xIndex * this.tileSize, zoom );
var bbRightMeters =  this.pixelsToMetersAtZoom( (xIndex+1) * this.tileSize, zoom );
var bbTopMeters =  this.pixelsToMetersAtZoom( (ytms+1)  * this.tileSize, zoom );
var bbBottomMeters =  this.pixelsToMetersAtZoom( ytms * this.tileSize, zoom );

So we had a quite bit of work to get one of our map sources to work with it.

in openlayers you can simply this declare this at map construction time.

var map = new OpenLayers.Map('map',
 { projection: new OpenLayers.Projection("EPSG:27700"), units: "m",
maxExtent: bounds, resolutions: [2000,400,100,50,25,10.16,5,2.5,0.625]});

However this might not be a very common use case and if you are just using common map sources …

Google,TMS and WMS,lat, long, Spherical Mercator projection it should work out the box.
However the performance difference is noticeable between the two libs. touchMapLite gives a user experience closer to a native application.

Potential off-line application?

There is code in touchMapLite that uses some HTML5 storage features. HTML5 canvas is used to base64 requested images and store them in a client-side SQL database. This would be a nice feature for an off-line application for use when travelling to remote parts of the country for field trips, hillwalking etc. I suppose you could use a cache.manifest instead when you are sure of the locations of your tile images but this technique would lose the flexibility of the canvas/sql approach.

fetchTileFromCache: function(image,z,x,y,src)

var tileObject = new Object;

tileObject.image = image;
tileObject.provider =;
tileObject.x = x;
tileObject.y = y;
tileObject.z = z;
tileObject.src = src;
tileObject.tiles = this;

if(this.db){ //  && document.getElementById('cache') && document.getElementById('cache').checked
this.db.transaction(function (tx)
tx.executeSql("SELECT data FROM tiles WHERE
provider = ? AND x = ? AND y = ? AND z = ?",
 [tileObject.provider, tileObject.x, tileObject.y, tileObject.z], function(tx, result) {

} else {

tileObject.image.src = result.rows.item(0).data;
}, function(tx, error) {


} else {
image.src = src;

touchMapLite screen shot from iphone

touchMapLite screen shot from iphone

Here is our example of using touchMapLite using a WMS map source.

It uses the ordnance survey products stack which has been recently been made freely available.
We have used a local map-server installation to serve up the osopen stack.

Posted by: addyedina | July 9, 2010

Android and iOS web framework

This neat little development has just been bought to my attention and i thought it was just the thing to brighten up a Friday afternoon.  “Sencha Touch is the world’s first app framework built specifically to leverage HTML5, CSS3, and Javascript for the highest level of power, flexibility, and optimization.”

Sencha Touch

Android + iOS, or is should that be the other way round?

The app seems to add the usual functionality but looks to standardise things such as icon libraries and proports to have found a way to determine screen size/resolution and dynamically adjust the app accordingly.  All sounds quite promising.

There are some example apps that use Sencha on the site but initial reports suggest that these are a bit flaky and unreliable.  However, they are a positive step in the right direction in making cross-platform apps that look and feel native.  Sencha is distributed under the GNU GPL license v3 which is good to hear.  Lets keep an eye on Sencha and see what happens.

« Newer Posts - Older Posts »