This project aims to create a device-independent, portable way of representing and sharing geo-information by taking advantage of the features offered by the big online map applications (Google Maps, Yahoo! Maps, Wikimapia etc). The project will comprise of applications for modern smartphones (Android phones, iPhone etc) and a web based app. All these applications will have the same purpose: providing the users with and easy and intuitive way to browse map data from different providers. Each application will take advantage of the device-specific environment (for mobile users, the map will be able to orient itself according to the phone inclination, the user's direction and speed of travel etc).
Data portability is key factor in the project. A user can bookmark a map representation he has put together and save it for future reference. Also, the user will be able to share this data with other users of the application, regardless of the device it runs on.
The most basic use case is switching map information providers on the fly. Some providers lack street-level information for some cities while others don't, for example. The application integrates data from the World's leading providers (Google Maps, Yahoo! Maps, Bing, MapPoint etc) in one context, enabling the user to select the preferred provider in his current area.
Another feature that the application offers is the ability to cache the maps directly on the device(s). This has a double benefit: firstly, you are not dependent on the Internet connection (think of navigating through an area that has no network coverage). Secondly, mobile service providers usually charge for traffic from mobile devices while connected to their UMTS networks. If you need maps for large areas it can get costly because a large amount of data needs to be downloaded. This can be worked around by downloading the data in the application cache when the device has a cheaper (and faster) connection to a Wi-Fi hotspot.
Emphasis will be put on user experience and the interface will attempt to integrate the services as smoothly as possible. A layered representation of the maps is given, with the ability to select the transparency level for each map. Also, the usual controls - zoom, pan, triggers etc. - will be integrated.
The application will also allow users to integrate their own files with the maps obtained from web-services. For example, in the case of hiking trails the web services generally provide maps which arent't of many use for navigation. Detailed maps exist mostly in printed form. The application will allow users to integrate - and share! - maps obtained from other sources (scanned printed maps, for example) as a separate layer in the map representation. The user can then align the imported maps with the others by using geographical coordinates. After creating the maps for a certain area, the user can then export/share it and thus it may be reused.
Information sharing is another area on which emphasis has been put in the development of the application. The objective is to allow users to share representations of maps painlessly. The two current options are sharing by URL or by XML-based configuration files. This way, users can build representations of a certain area and send them to friends with only a few mouse clicks. By integrating the application with social networks, this easy way of sharing map information will prove to be crucial for future developments.
Finally, the application is and will be open source. We firmly believe in open-source development and crowdsourcing. This will always be a driving factor behind the application's development. We hope to draw in developers and build a community that will contribute to the application's growth and development.
The application is built with regard to the model-view-controller design pattern.
The application proposes a layered representation of data (in the model as well as in the views). Each layer corresponds to an online service from which data has been imported. Also, the user will have the option of uploading his own images and fitting them to a geographical area, thus creating his own map layer. Each of these layers will comprise of the image (the actual visual representation of the map) and imported points of interest. The categories of POI's which will be imported and the way layers are represented visually will be user-configurable (layers will have different levels of transparency).
The Controller and the View
The user interface and the actual visual representation of the data will be handled in the controller and the views. The application will take advantage of features present in modern phones (gyroscope, accelerometer, compass, GPS) to draw maps taking into consideration the user's orientation, phone incline, speed of movement, actual position. This will result in an improved user-experience which can be adapted the current use-case (walking, driving, hiking etc).
TODO: geolocation service etc.
Building the application