A GPS navigation software with basic functionality for Windows Mobile/CE needs to be developed.
1. Map format: Source format for a map is MP. (So called 'Polish Format' - text based and easy to understand.) It's description takes 4 pages only.) An own secured binary format needs to be developed. Accordingly a converter from MP to own format needs to be developed and a Mercator (http://ru.wikipedia.org/wiki/&#1055;&#1088;&#1086;&#1077;&#1082;&#1094;&#1080;&#1103;_&#1052;&#1077;&#1088;&#1082;&#1072;&#1090;&#1086;&#1088;&#1072;) conversion has to be implemented on this stage.
2. Drawing a map: 2 modes should be supported - 2D and pseudo 3D. Scaling, scrolling while dragging, rotation, switching between layers with diff. detailing should be implemented. Pieces of map have to be cached in order to speed up their drawing. Object drawing is vector based, however in order to increase drawing speed, signatures for objects (e.g. street names) should be drawn using prerendered raster images of alphabet symbols (as done in Navitel). Changing map detailing and POI (point of interest) filtering should be done. Opening both a single map and atlases consisting of multiple maps, saving atlases should be implemented.
3. Interface development: whole business logic for a program, mockups, and prepared images will be explained/delivered to a developer. An adaptive keyboard - is a single not trivial feature in UI. It works as follows: while typing a word and pressing the next symbol, the keyboard disables not valid symbols that are not present in a set of available words. This feature is like a T9 mode in mobile phones.
4*. Build the route: from current position and from any point to any point taking into account restricted directions, prohibition of drive/turn and schedule for these restrictions. Should be able to build three kinds of the route - the shortest, the fastest, and medium. Use/apply restrictions for vehicle type (car, taxi, truck, pedestrian, emergency). Each of types of the route should have a switchable option - reduce a number of turns if route is no longer than custom percent. One more option - avoid as long as possible to go through alleyway/private driveways.
5. Navigation: Show a current position of the user on the map and direction of movement with arrow style cursor using a GPS receiver (like in Navitel or IGo). Automatic rotation of the map while moving. Voice messaging about future events (turns, restrictive signs etc).
6. Search: Find a point by address - show on the map, build route to it. Search of the closest objects and showing a distance to them from a current point. Save search history.
7. The others: Store and display custom points/points of interest (with names) on the map. POI filtering. Defining user (route) spots. Possibility to set a distance for alert. Use sensors - calculating a way passed thru the day/other time/average speed/idle time etc. Track saving.
1. High performance. Software should work not slower than Navitel.
2. Run on Windows Mobile 6 (and possibly WM5), Windows CE 5.0/4.2
3. Run on devices with 64M
4. To be developed using C++. Presumably using QT, SpatialIndex and Boost libraries.
5. A security mechanism preventing illegal copying needs to be developed.
1. A candidate has to give time estimation for implementation of the above functionality.
2. The candidate has to inform how many hours per week he's able to work on the project.
The successful candidate will be provided with the following artifacts:
1. A sample map in MP format (text format) with full description of the format
2. The same map converted to .NM2 (Navitel format)
5. A logical schema for planned functioning of the User Interface (UI)
6. A package of graphical artifacts (icons, buttons, skins, screen mockups) for UI.
7. Portable navigation device for testing purposes
The features of team member's interaction:
1. Authors of project idea (API) have a clear vision of mechanisms (algorithms) for implementation of the critical project tasks, and ready to actively participate in elaboration of solutions for implementation of non-trivial pieces of code.
2. API have examples of implementation of the separate project tasks and ready to share them.
1. The project will be implemented during several iterations. The given specification describes the 1st iteration only that only includes the functionality described above. The next iterations intend the implementation of the many extended functions, such as interaction count and showing of the traffic-jams, full-fledged 3D mode, etc.
* - The task can be possibly implemented by API. (Please take this fact into account while doing the estimation and give the estimation with and without the 4th section.)