Marble/OnlineRoutingImplementation: Difference between revisions

From KDE TechBase
(Created page with 'This page lists more concrete steps to integrate online routing support. Code is currently available at http://nienhueser.de/git/marble.git == Step 1: Basic workflow (done) == *...')
 
No edit summary
Line 6: Line 6:
* UI to display routing instructions
* UI to display routing instructions
* Implement a routing provider base
* Implement a routing provider base
* Implement routing provider for Google maps, parse resulting KML and feed to routing display
* Implement routing provider for CloudMade, parse resulting gpx and feed to routing display
* Implement routing provider for CloudMade, parse resulting gpx and feed to routing display


== Step 2: Integrate with search UI ==
== Step 2: Marble Widget Layer (in progress) ==
* Merge UI in MarbleControlBox: Search via runners and routing can be done from the same widget similar to how Google Maps does it
* Default Search is pretty much the same, but has a "Routing mode" button which adds a second search widget (likely more to support intermediate targets)
* Search results are shown in the list view as before. The selected search result is kept track of and taken as the source/destination point.
* Once all routing points are known (user selected a search result or clicked on the map for both routing source and destination and intermediate points, if any), the "Get Directions" button can be used to fetch routing instructions from the current routing provider
* Routing results are shown in the same list view as marble runner search results
 
== Step 3: Marble Widget Layer ==
* Make a custom routing paint layer which displays routing points: Start, destination, intermediate points. Waypoints, possibly connected. Routing instructions.
* Make a custom routing paint layer which displays routing points: Start, destination, intermediate points. Waypoints, possibly connected. Routing instructions.
* Bonus points for
* Bonus points for
Line 23: Line 15:
** Provide tooltips / unfolding for routing instructions
** Provide tooltips / unfolding for routing instructions
* Integrate the paint layer with MarbleWidget/MarbleMap. Eventually extend LayerManager to support adding layers not via plugins.
* Integrate the paint layer with MarbleWidget/MarbleMap. Eventually extend LayerManager to support adding layers not via plugins.
== Step 3: Integrate with search UI ==
* Merge UI in MarbleControlBox: Search via runners and routing can be done from the same widget similar to how Google Maps does it
* Default Search is pretty much the same, but has a "Routing mode" button which adds a second search widget (likely more to support intermediate targets)
* Search results are shown in the list view as before. The selected search result is kept track of and taken as the source/destination point.
* Once all routing points are known (user selected a search result or clicked on the map for both routing source and destination and intermediate points, if any), the "Get Directions" button can be used to fetch routing instructions from the current routing provider
* Routing results are shown in the same list view as marble runner search results


== Step 4: Plugins ==
== Step 4: Plugins ==
* Refactor marble runners to be plugins
* Refactor marble runners to be plugins
* Refactor routing providers to be plugins
* Refactor routing providers to be plugins
* Does it make sense to generalize runners as a common base for both coordinate searchs (current runners) and routing providers?
* Routing providers and marble runners share a common base


== Step 5: Configuration ==
== Step 5: Configuration ==
Line 35: Line 34:
* Integrate openrouteservice.org (permission to use in Marble kindly granted by them)
* Integrate openrouteservice.org (permission to use in Marble kindly granted by them)
* Integrate yournavigation.com
* Integrate yournavigation.com
* Implement scoring, auto-choose the best provider/result
* Google Maps can not be integrated due to its terms of service

Revision as of 21:29, 8 February 2010

This page lists more concrete steps to integrate online routing support. Code is currently available at http://nienhueser.de/git/marble.git

Step 1: Basic workflow (done)

  • UI to select source and destination via map clicks
  • UI to select source and destination via runners (esp. OSM namefinder)
  • UI to display routing instructions
  • Implement a routing provider base
  • Implement routing provider for CloudMade, parse resulting gpx and feed to routing display

Step 2: Marble Widget Layer (in progress)

  • Make a custom routing paint layer which displays routing points: Start, destination, intermediate points. Waypoints, possibly connected. Routing instructions.
  • Bonus points for
    • Making the paint layer a QAbstractItemView working on the same model as the routing instructions list view and sharing the selection model with it
    • Make source/destination points movable directly in the map
    • Provide tooltips / unfolding for routing instructions
  • Integrate the paint layer with MarbleWidget/MarbleMap. Eventually extend LayerManager to support adding layers not via plugins.

Step 3: Integrate with search UI

  • Merge UI in MarbleControlBox: Search via runners and routing can be done from the same widget similar to how Google Maps does it
  • Default Search is pretty much the same, but has a "Routing mode" button which adds a second search widget (likely more to support intermediate targets)
  • Search results are shown in the list view as before. The selected search result is kept track of and taken as the source/destination point.
  • Once all routing points are known (user selected a search result or clicked on the map for both routing source and destination and intermediate points, if any), the "Get Directions" button can be used to fetch routing instructions from the current routing provider
  • Routing results are shown in the same list view as marble runner search results

Step 4: Plugins

  • Refactor marble runners to be plugins
  • Refactor routing providers to be plugins
  • Routing providers and marble runners share a common base

Step 5: Configuration

  • Support routing customization: By car, by bycyle, ...

Step 6: More routing providers

  • Integrate openrouteservice.org (permission to use in Marble kindly granted by them)
  • Integrate yournavigation.com
  • Implement scoring, auto-choose the best provider/result
  • Google Maps can not be integrated due to its terms of service