Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Требуется разработать навигационную GPS программу с базовой функциональностью под Windows Mobile/CE.

Функциональные требования:

1. Формат карты: Исходный формат карты MP (Польский формат - он текстовый и очень простой, его описание занимает всего 5 страниц). Требуется разработать свой защищенный бинарный формат и соответственно конвертер в него из MP формата. На стадии конвертации должно быть реализовано преобразование Меркатора (http://ru.wikipedia.org/wiki/Проекция_Меркатора).

2. Отрисовка карты: необходимо реализовать два режима - 2D и псевдо 3D. Должно быть реализовано масштабирование, скролирование перетягиванием, вращение, переключение на слои с большей/меньшей детализацией при достижении определенного масштаба. Должно быть реализовано кеширование отрисовки. Отрисовка всех объектов векторная, но для увеличения производительности подписи объектов должны быть выполнены путем заготовленных растровых изображений символов с углами поворота 0-180 градусов с шагом ориентировочно 5 градусов (как в Навител). Управление детализацией карты и фильтрация ПОИ (точки интереса). Открывать как одну карту, так и атласы созданные из множества карт, сохранение атласов.

3. Разработка интерфейса: вся логика работы и готовые изображения будут предоставлены. Из особенностей стоит отметить только адаптивную клавиатуру - при вводе каждого следующего символа должны оставаться доступными только оставшиеся варианты.

4*. Прокладка маршрута: от текущей и от произвольной точки к произвольной с учетом направления движения, запретов проезда/поворотов, времени их действия. Нужно предусмотреть три режима - кратчайший, быстрейший и средний между ними (возможность задавать в процентах близость к быстрому или короткому). Учитывать тип транспортного средства - легковая, грузовик, такси, пешеход, спец. транспорт. Дополнительные опции - минимизировать кол-во поворотов, если изменение длины маршрута при этом не превысит ХХ процентов, избегать прокладки через дворовые проезды, избегать разворотов.

5. Навигация: Показ текущей позиции пользователя на карте и направления движения при помощи стрелки курсора, используя GPS ресивер. Вращение карты по движению. Ведение по маршруту с предупреждением о текущих маневрах с возможностью корректировки заблаговременности сообщения. Голосовое оповещение о прочих событиях при движении без прокладки маршрута. Возможность самостоятельного вращения карты. Притягивание к дороге (возможность задавать при каком отклонении притягивать).

6. Поиск: Поиск точки по адресу - показывать на карте, прокладывать маршрут к ней. Поиск ближайших объектов с выводом расстояния до каждого по прямой от текущего положения. Сохранять историю поиска. Сохранять "любимые" адреса - это часто набираемые в поиске адреса.

7. Прочее: Задание пользовательских (путевых) точек, возможность задания в каждой точке за какое расстояние предупреждать о приближении к ней звуком. Запись и отображение на карте трека. Датчики - текущая скорость, засекание пройденного пути за день/за все время, средняя скорость, время простоев, отображение текущей высоты и т.д.

Задачи:

1. Формат карты:

1.1 Разработка бинарного формата карты. (Скорее всего должны быть основной файл с данными и индексный.) Предположительно в индексном файле должна быть адресная информация, координаты центра домов, возможно типы объектов, упрощенный дорожный граф, т.е. только роутинговые точки, расстояние между ними и информация о запретах. В основном файле будут хратиниться все координаты полилиний и полигонов, т.е. их форма.

1.2 Написание конвертера из исходного MP-формата в бинарный (Pc-программа). При сохранении координаты должны быть преобразованы в 26бит для самого детального слоя, затем если присутствует слой 24бит, загрубить все объекты которые помечены так что должны отображаться на этом слое и физически сохранить этот слой и так для всех слоев карты.

1.2.1 Реализация преобразование Меркатора (http://ru.wikipedia.org/wiki/Проекция_Меркатора).2. Работа с объектами:

2.1 Реализовать высокопроизводительный поиск объектов по атрибутам (адресу, координатам, подписям объектов) в бинарном файле.

2.2 Реализовать высокопроизводительный поиск объектов, которые должны быть отрисованы в текущей области экрана, в бинарном файле.

2.3 Реализовать кеширование близлижайших областей (по отн-ю к тек. области экрана) для отрисовки. (Суть - отсутствие ожидания загрузки смежных областей

во время скроллирования карты.)

3. Отрисовка карты:

3.1 Реализовать отрисовку в 2D режиме.

3.2 Реализовать отрисовку в псевдо 3D режиме.

3.3 Реализовать масштабирование, скролирование перетягиванием, вращение (ручное), переключение на слои с большей/меньшей детализацией при достижении определенного масштаба. (Разбивка на слои предусмотрена MP-форматом. См. его описание)

3.4 Реализовать подписывание объектов высопроизводительным путем. (Хотя отрисовка всех объектов и векторная, но для увеличения производительности подписи объектов должны быть выполнены путем вывода заготовленных растровых изображений символов с углами поворота 0-180 градусов с шагом ориентировочно 5 градусов (как в Навител).

4. Работа с атласами:

4.1 Создание/сохранение атласов. (Атлас - это связь нескольких разрозненных карт в единое целое. Связывание делается за счет т.н. внешних роутинговых узлов, имеющихся на картах.)

4.2 Загрузка картографических данных как из атласов, так и из отдельных карт.

5. Интерфейс:

5.01 Реализация элементов главного экрана

5.02 Реализация окна "Быстрый выбор масштаба"

5.03 Реализация окна "Главное меню"

5.04 Реализация окна "Карты"

5.05 Реализация окна "Доп. поиск"

5.06 Реализация окна "Датчики"

5.07 Реализация окна "Спутники"

5.08 Реализация окна "Вращение"

5.09 Реализация окна "Предупреждения"

5.10 Реализация окна "Еще"

5.11 Реализация окна "Вид карты"

5.12 Реализация окна "Интерфейс"

5.13 Реализация окна "Навигация"

5.14 Реализация окна "Звук"

5.15 Реализация окна "О программе"

5.16 Реализация окна "Системные"

5.17 Реализация окна "Системные:ориентация"

5.18 Реализация окна "Системные:клавиатура"

5.19 Реализация окна "Маршрут"

5.20 Реализация окна "Вид транспорта"

5.21 Реализация окна "Маршрут: ..."

5.22 Реализация окна "Свойства маршрута"

5.23 Реализация варантов адаптивных клавиатур. (Адаптивная клавиатура - при вводе каждого следующего символа должны оставаться доступными только оставшиеся варианты. См. работу Навитела.)

6. Прокладка маршрута:

6.1 Реализовать просчет маршрута (предположительно на основе алгоритма Дейкстры).

(При этом учесть направление движения, запреты проезда/поворотов, время их действия. Нужно предусмотреть три режима - кратчайший, быстрейший и средний между ними. Учитывать тип транспортного средства - легковая, грузовик, такси, пешеход, спец. транспорт. Дополнительные опции - минимизировать кол-во поворотов, если изменение длины маршрута при этом не превысит ХХ процентов, избегать прокладки через дворовые проезды, избегать разворотов.)

7. Навигация:

7.1 Считывание текущего положение пользователя с GPS ресивера (показ текущей позиции пользователя на карте и направления движения при помощи стрелки курсора).

7.2 Вращение (автоматическое) карты по движению.

7.3 Ведение по маршруту с предупреждением о текущих маневрах (графическое+голосовое). Предусмотреть возможность корректировки заблаговременности сообщения (в метрах, секундах, процентах).

7.4 Голосовое оповещение о прочих событиях при движении без прокладки маршрута. (Например, предупреждение о знаках ограничения скорости, лежачих полицейских.)

7.5 Притягивание к дороге (возможность задавать при каком отклонении притягивать).

8. Поиск:

8.1 Поиск точки по адресу/координатам - показывать на карте, прокладывать маршрут к ней.

8.2 Поиск ближайших объектов к текущему положению пользователя с выводом расстояния до каждого по прямой.

8.3 Сохранение истории поиска.

9. Прочее:

9.1 Управление пользовательскими (путевыми) точками. Возможность задания в каждой точке, за какое расстояние предупреждать о приближении к ней голосом.

9.2 Запись и отображение на карте трека.

9.3 Управление датчиками. (Текущая скорость, засекание пройденного пути за день/за все время, средняя скорость, время простоев, отображение текущей высоты и т.д.)

9.4 Работа с ПОИ (точки интереса). Отображение и фильтрация (возможность задать от какого до какого масштаба будут отображаться определенные типы).

Нефункциональные требования:

1. Высокая производительность. Программа должна работать не медленнее Navitel.

2. Работать на Windows Mobile 6 (и возможно WM5), Windows CE 5.0 (возможно и 4.2)

3. Работать на устройствах с 64M

4. Должна быть разработана на С++. Предположительно с использованием библиотек Qt, Boost, SpatialIndex.

5. Должен быть разработан механизм защиты от копирования

Бизнес аспекты:

1. Кандидат должен дать оценку реализации вышеперечисленной функциональности по срокам.

2. Кандидат должен сообщить, какое количество часов в неделю он способен уделять проекту.

Кандидат, выбранный для реализации проекта, будет обеспечен следующим пакетом ПО:

1. Образцом карты в MP-формте (текстовый формат) с полным описанием формата

2. Образцом карты, конвертированным в NM2-формат (формат Navitel)

3. Navitel

4. GPSMapEdit

5. Схемой логики работы интерфейса

6. Пакетом графических артефактов (иконок, кнопок, скинов, макетов экранов готовых на 100%) для пользовательского интерфейса

7. Портативными навигаторами для тестирования проекта

Особенности взаимодействия участников проекта:

1. Авторы идеи проекта (АИП) имеют видение механизмов(алгоритмов) реализации критических задач проекта, и готовы активно участвовать в обдумывании

подходов реализации нетривиальных задач, возникающих на проекте.

2. АИП имеют примеры реализации отдельных задач проекта.

Перспективы:

1. Проект будет реализован в несколько итераций. Данная спецификация описывает лишь первую из них, на которой нужно реализовать лишь описанный выше функционал. Последующие итерации предполагают реализацию множества расширенных функций, наиболее глобальные из которых - интерактивный расчет и отображение "пробок", полноценный 3Д режим, затем портирование на iPhone, Symbian, Android, PC.

* - Задача возможно будет реализована силами АИП. (Просьба учесть в оценках, т.е. дать 2 оценки с реализацией п.4 и без.)

14 лет назад
Prashkovich
Прашкович 
48 летРоссия
14 лет в сервисе
Был
13 лет назад
Выбранный исполнитель
ufna
33 годаРоссия
17 лет в сервисе
Был
2 года назад
14 лет назад
$7000
60 дней