Latest revision |
Your text |
Line 1: |
Line 1: |
- | This page is intended to collect thoughts about a Qt map widget. | + | This page is intended to collect thoughts about a QT map widget. |
| | | |
- | == Why a QTMapWidget? ==
| + | - Why a QTMapWidget? - |
- | | + | |
- | Maemo/Meego devices are mobile GPS based devices. A demand for mapping services is thus very obvious. The current situation in [[Open development/Maemo roadmap/Fremantle|Maemo 5]] 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 [http://wiki.openstreetmap.org/wiki/Tile_usage_policy], 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
| + | |
- | * 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 [http://www.openstreetmap.org], google [http://maps.google.com], yahoo [http://maps.yahoo.com], virtual earth [http://www.bing.com/maps/])
| + | |
- | *** Simple/dynamic method to add more sources (also user specific ones like [[Maemo-mapper topomaps]])
| + | |
- | ** WMS data [http://www.ogc-services.net/]
| + | |
- | ** Vector data
| + | |
- | *** OSM vector data ("planet file" [http://wiki.openstreetmap.org/wiki/Planet.osm])
| + | |
- | *** Map data stored by OVI maps [http://maps.ovi.com/]
| + | |
- | * 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)
| + | |
- | * 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 [http://labs.trolltech.com/page/Projects/QtMobility]
| + | |
- | | + | |
- | == 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 [http://www.medieninf.de/qmapcontrol/] ===
| + | |
- | | + | |
- | Pros:
| + | |
- | * Lightweight
| + | |
- | * Runs out of the box on Maemo5
| + | |
- | * Supports WMS
| + | |
- | | + | |
- | Cons:
| + | |
- | * Not actively maintained atm
| + | |
- | * Lacks basic functionality (GPS integration, live track capture, ...)
| + | |
- | * Has some rendering problems under Maemo (track display)
| + | |
- | * Google maps integration broken
| + | |
- | | + | |
- | === Marble [http://edu.kde.org/marble/] ===
| + | |
- | | + | |
- | Pros:
| + | |
- | * Very active big developer community. Some core developers are involved with the Maemo / MeeGo project already. There are currently 3 GSoC developers working exclusively on Marble.
| + | |
- | * Support for Maemo 5 and MeeGo. Early Maemo 5 packages available.
| + | |
- | * Lightweight for what it does (100000LOC).
| + | |
- | * Used in KDE as a generic map widget already.
| + | |
- | * Supports OpenStreetMap, Google Maps, Yahoo, Custom Server Layouts. Basic WMS support.
| + | |
- | * Online Routing support (via e.g. ORS).
| + | |
- | * Support for position providers as plugins (gpsd, GeoClue, liblocation).
| + | |
- | * Support for KML, GPS (support for OSM in the works).
| + | |
- | * Different projections (sphere, Mercator, Equirectangular).
| + | |
- | * Qt-Style API throughout the Marble Library.
| + | |
- | | + | |
- | Cons:
| + | |
- | * Performance improvements for Maemo 5 necessary. However these are in the works.
| + | |
- | * While the overall quality of the code is pretty good there is still some legacy code in a few places.
| + | |
- | * I am very concerned regarding battery usage with this 3d approach as it puts a huge load (currently 100%) on the CPU even at low refresh rates --[[User:harbaum|harbaum]] 18:40, 12 June 2010 (UTC)
| + | |
- | | + | |
- | == 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:
| + | |
- | | + | |
- | [[Category:Development]]
| + | |
- | [[Category:Qt]]
| + | |