Добавление данных векторной карты в приложение GPS iOS. Реализация векторной графики в реальном времени

Мы работаем над проектом по добавлению данных векторной карты из OSM и NAVTEQ в приложение GPS iOS.

В настоящее время приложение отображает изображения растровой карты и предоставляет возможности навигации по карте. Теперь мы хотим сделать еще один шаг вперед по картам интегрирования, но не знаем, с чего начать.

Руководство от разработчиков, имеющих опыт работы с GPS-навигацией, будет отличным.

Вот краткое изложение требований:

Целевые устройства: IOS. С++ является предпочтительным для ядра для будущей совместимости с другими платформами.

Интеграция и упаковка данных: Источник данных карты: - NAVTEQ - OpenStreetMap

Формат файла: - Идеально подходит для мобильных устройств с учетом ограничений устройства. - либо найти уже установленный формат, либо создать его в доме.

Компиляция: - Определить формат исходных данных (Shp, MapInfo и т.д.). - Скомпилировать исходный формат в требуемый формат.

Механизм рендеринга карты: Отображение карт: - Векторная карта будет разделена на текущий вид растровой карты. - Отображать данные в строках, точках, многоугольниках и т.д. В режиме реального времени. Плитка или предварительная визуализация неприемлема. - 2D вид птичьего полета. (3D планируется для будущих версий). - Рельеф теней для иллюстрации высоты. - Отображать пользовательские данные, такие как маршруты, треклоги, путевые точки. - Шкала, например. 500 метров. - Быстрая работа необходима для обеспечения лучшего пользовательского опыта. Хорошими примерами будут приложение Tom Tom iOS. Взаимодействие с картами: - панорамирование, масштабирование, поворот. - Используйте мультитач-функции. Поиск - Адрес, местоположения, POI (Geo Coding) - Адрес из местоположения (Обратное геокодирование)

Таблицы стилей - Легко настроить внешний вид карты. - Каждый элемент может быть cusomised.

Мы хотели бы узнать, с чего начать наше исследование. Какие библиотеки и SDK находятся там, которые стоит потратить время на исследование?

Ответ 1

Некоторые заметки, основанные на моем опыте:

Формат исходных данных: вы, вероятно, захотите импортировать данные из шейп файлов ESRI и OpenStreetMap (который поставляется в виде XML или более компактного, но эквивалентного двоичного формата). Данные NAVTEQ могут быть получены как шейп файлы ESRI. Затененный рельеф может быть получен путем обработки данных высоты USGS (http://dds.cr.usgs.gov/srtm/).

2D в сравнении с 3D: шаг от одного к другому - большой. 2D-данные почти всегда предоставляются в виде широты и долготы и проецируются на плоскость: Карты Google и OpenStreetMap используют очень простую, но очень изрядную сферическую проекцию Меркатора. Для перехода на 3D требуется решение о системе координат - проецируемая плоскость плюс высота по сравнению с истинным 3D в зависимости от формы земли - и, возможно, проблемы, связанные с уровнем детализации. Хорошим способом продолжения может быть рисование формы земли (холмы и долины) в виде треугольной сетки, а затем наложение на нее остальной части карты как текстуры. Возможно, вы захотите рассмотреть "два с половиной D" - с помощью преобразования перспективы для отображения карты, как если бы она просматривалась с высоты.

Библиотеки: существует довольно большой список библиотек рендеринга карт здесь, как коммерческих, так и некоммерческих (раскрытие: mine является одним из них), Многие из этих библиотек имеют системы таблиц стилей для настройки внешнего вида карты.

Очень хорошая библиотека рендеринга с открытым исходным кодом (не моя) - Mapnik, но я не уверен, что это будет очень легко переноситься на iOS. Тем не менее, очень хорошая идея - прочитать, как Mapnik и другие библиотеки-библиотеки выполняют свою работу, чтобы понять проблему. Вики OpenStreetMap - хороший портал, чтобы узнать больше о поле.

Обработка текста на картах почти всегда выполняется с помощью FreeType, библиотеки растеризатора с открытым исходным кодом с неограниченной лицензией.

Ответ 3

Существует список на OSM Wiki, но он, к сожалению, не завершен.

Две векторные библиотеки, о которых я знаю, CartoType (которые вы можете видеть при использовании в новой Lonely Planet Guides) и Skobbler - Skobbler не имеет готового продукта но я убежден, что они будут интегрировать свои векторные карты и маршрутизацию для вас.

Существует также связанный с этим вопрос о OSM StackExchange