Support MapQuest API Keys
completed by: Mikhail Ivchenko
mentors: Torsten Rahn, Dennis Nienhüser
Marble is a virtual globe and world atlas — your Swiss army knife for maps. Find your way and explore the world!
Note: This task requires you to sign up for a MapQuest AppKey. Do not claim this task if you do not want to do that.
MapQuest Open provides a web API to calculate routes and directions. Marble integrates mapquest routing in a Marble routing backend plugin. Recently MapQuest Open changed their API to require AppKeys to work. Due to their terms of usage we cannot put a common Marble API key in the sources. Instead we want users to be able to register an AppKey on their own and enter it in Marble in the mapquest routing backend configuration. This task is about implementing the user interface for it and storing the AppKey in the configuration.
- Extend MapQuestConfigWidget.ui with an input field for entering a MapQuest AppKey. The key should be stored in the settings of the plugin. Add an explanatory label that tells the user that such a key is required for MapQuest routing to work, and include a link to http://developer.mapquest.com/web/products/open (opening in a browser window) where users can register for one.
- Extend MapQuestRunner::retrieveRoute to include the AppKey in the request. If no key has been entered by the user, it shouldn't try to retrieve a route.
- Implement the virtual bool canWork() const method in MapQuestPlugin. Have it return true only if an AppKey has been set in the settings
- Test your implementation by registering for an AppKey. Verify that the backend does not try to retrieve a route if no AppKey is set, and that is retrieves a mapquest route successfully if a valid AppKey is entered. Check that the AppKey is saved and loaded again when restarting Marble.