Marble/OnlineRoutingImplementation: Difference between revisions

From KDE TechBase
No edit summary
Line 1: Line 1:
This page lists more concrete steps to integrate online routing support. Code is currently available at http://nienhueser.de/git/marble.git
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) ==
== Routing providers (data)==
* UI to select source and destination via map clicks
Support data download from
* UI to select source and destination via runners (esp. OSM namefinder)
* openrouteservice.org
* UI to display routing instructions
* yournavigation.com
* Implement a routing provider base
* Google Maps
* Implement sample routing providers
* CloudMade


== Step 2: Marble Widget Layer (in progress) ==
== Marble Widget Layer (in progress) ==
* 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 16: Line 16:
* 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: More routing providers (in progress) ==
== Integrate with search UI (in progress) ==
* 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
* Check terms of service for cloudmade
 
== Step 4: Integrate with search UI (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
* 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 "More" button which adds more search widgets (each representing one position to be included in the route)
* Default Search is pretty much the same, but has a "More" button which adds more search widgets (each representing one position to be included in the route)
Line 30: Line 23:
* Routing results are shown in the same list view as marble runner search results
* Routing results are shown in the same list view as marble runner search results


== Step 5: Plugins ==
== 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
* Routing providers and marble runners share a common base
* Routing providers and marble runners share a common base


== Step 6: Configuration ==
== Configuration ==
* Support routing customization: By car, by bycyle, ...  
* Support routing customization: By car, by bycyle, ...  


== Step 7: Icons ==
== Artwork ==
Ask the oxygen guys if they can help out with some icons:
Ask the oxygen guys if they can help out with some icons:
* route-start (Starting point for routing)
* route-start (Starting point for routing)
Line 46: Line 39:
* route-select-start (Action to pick route start in the map. Might be equal to route-start)
* route-select-start (Action to pick route start in the map. Might be equal to route-start)
* route-select-destination (Action to pick route destination in the map. Might be equal to route-destination)
* route-select-destination (Action to pick route destination in the map. Might be equal to route-destination)
== Shipping ==
* Check which routing providers can be shipped / enabled by default
* OpenRouteService allows non-commercial usage. Exact definition todo
* Google Maps cannot be used at all (license terms)
* CloudMade can possibly not be used (cumbersome pricing model)
* YourNavigation is currently too limited (server often busy, routing data only for UK? No route instructions atm, only waypoints)

Revision as of 22:14, 15 February 2010

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

Routing providers (data)

Support data download from

  • openrouteservice.org
  • yournavigation.com
  • Google Maps
  • CloudMade

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.

Integrate with search UI (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 "More" button which adds more search widgets (each representing one position to be included in the route)
  • 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

Plugins

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

Configuration

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

Artwork

Ask the oxygen guys if they can help out with some icons:

  • route-start (Starting point for routing)
  • route-destination (Destination point for routing)
  • route-alternative (Ambiguous source/destination search string: User needs to pick one of several alternative points)
  • route-instruction (Intermediate route point with turn instructions)
  • route-select-start (Action to pick route start in the map. Might be equal to route-start)
  • route-select-destination (Action to pick route destination in the map. Might be equal to route-destination)

Shipping

  • Check which routing providers can be shipped / enabled by default
  • OpenRouteService allows non-commercial usage. Exact definition todo
  • Google Maps cannot be used at all (license terms)
  • CloudMade can possibly not be used (cumbersome pricing model)
  • YourNavigation is currently too limited (server often busy, routing data only for UK? No route instructions atm, only waypoints)