QTMapWidget
This page is intended to collect thoughts about a QT map widget.
Contents |
Why a QTMapWidget?
Maemo/Meego devices are mobile GPS based devices. A demand for mapping services is thus very obvious. The current situation in Maemo5 shows that leaving this task to the individual developers has several disadvantages for the developer as well for the end user.
Disadvantages of current Maemo5 situation
In Maemo5 there is no generic map widget. Thus various developers came up with their own solutions. Some of these were based on existing widgets (e.g. osm-gps-map), are ports of previous maemo4 projects (mappero) or are completely new solutions written from scratch. Few of these share the same map widget.
- Every developer had to implement his own solution
- Map tiles are stored/cached in different locations on the device
- Waste of bandwidth (one widget cannot re-use data cached by another one and needs to re-download it)
- Some map servers have limited bandwidth [1], one unified map widget may allow easier caching at one proxy server of all applications that use it.
- Waste of flash space as the same data is stored separately by different map widgets
- Waste of bandwidth (one widget cannot re-use data cached by another one and needs to re-download it)
- No central place for map cache maintenance
- No way to globally add new map sources
- No way to flush the map tile cache
- No way to prefetch map tiles for offline usage
- Individual look and feel for widgets addressing the same problem
- No interoperability (e.g. one app cannot display the track that was captured while another one was running)
- Some widgets don't work behind network proxies
- None of the existing widgets is really developer friendly
Wishlist
If you are a developer and are interested in using such a widget. What would be the things you really want to have? What do you explicitly don't want to see in such a widget?
- Support for various map sources
- Classic tile based sources (openstreetmap, google, yahoo, virtual earth)
- Simple/dynamic method to add more sources (also user specific ones)
- WMS data
- Vector data
- OSM vector data ("planet file")
- Map data stored by OVI maps
- Classic tile based sources (openstreetmap, google, yahoo, virtual earth)
- Plugin concept for map sources
- Built-in location support, options:
- GPSD: GPS position
- Liblocation: position (GPS, network), compass and gyro
- QT mobility location: position (GPS, network), compass and gyro
- Ability to provide location to main application
- Overlays
- Static overlays (don't move nor zoom with the map)
- Current position in textual representation
- Map center ("cross hair")
- Scale (metric as well as imperial)
- Zoom buttons
- Map source selection
- Dynamic overlays (move and zoom with the map)
- Waypoints incl. icons
- Tracks incl. a dynamic one built from GPS data
- Location indicator (position, direction and precision)
- Static overlays (don't move nor zoom with the map)
- Separate maintenance tool
- Limit/monitor tile cache size
- Clean tile cache
- Preload tiles for offline usage
- Refresh tiles
- Perhaps as a control panel plugin
Related resources
QT mobility location [2]
Existing widgets
We are not the first ones to work with maps under QT. What projects exist? Can they be re-used? What are their advantages and disadvantages?
QMapControl [3]
Pros:
- Lightweight
- Runs out of the box on Maemo5
- Supports WMS
Cons:
- Not actively maintained atm
- Lacks basic functionality (GPS integration, dynamic track cature, ...)
- Has some rendering problems under Maemo (track display)
- Google maps integration broken
Marble [4]
Looks pretty complex, do we want the basic map widget to be that complex?
Count me in!
We need some people who would like to contribute. Please state here if you want to contribute some of your time.
Widget coding:
- Till Harbaum
I have an application i'd like to use such a widget in:
- Till Harbaum (tool to visualize contact positions and to track friends)
UI-Design, Mockups: