Я рассматриваю решение, которое позволит использовать данные OpenStreetMap для рендеринга двумерной топографической векторной карты в iOS вместо использования предварительно отрисованных плит с сервера. Подобно Apple и Google Maps в iOS6 +.
Я провел обширные исследования по этому вопросу, но не нашел слишком много информации.
Есть ряд приложений iOS, которые делают это, но нет информации о том, как они его реализуют. Пара этих приложений:
Первые 2 приложения работают аналогично Apple и Google Maps. Карта рисуется в реальном времени всякий раз, когда изменяется масштаб.
Последний, похоже, использует несколько иной подход. Он отображает векторные данные при определенных уровнях масштабирования и создает плитки, которые затем используются как обычные плитки, загруженные с сервера плитки. Таким образом, механизм рендеринга действительно может быть источником плитки для библиотеки Route-Me, но вместо того, чтобы загружать фрагменты, он отображает их на лету.
Предпочтительным является первый метод.
[Q] Я думаю, что можно было бы переключаться между методами довольно легко, как только рендеринг OpenGL ES будет на месте. Я имею в виду, что вы могли бы использовать средство визуализации в качестве источника для Route-Me для создания плиток, или вы могли бы использовать его как ящик в режиме реального времени, похожий на игру. Я прав?
Самое близкое найденное решение - OpenStreetPad. Однако вместо OpenGL ES используется Core Graphics, поэтому рендеринг не ускоряется аппаратным.
Mapbox заявила, что они работают над векторными плитками, и они, вероятно, предоставят решение для iOS для рендеринга, однако он может использовать Mapnik, поэтому я не уверен, насколько это будет эффективно. И нет ETA с середины 2013 года.
[Q] Знаете ли вы о каких-либо других библиотеках, документах, руководствах, примерах или какой-либо другой полезной информации о том, как подойти к этому? В основном, как обрабатывать данные OSM и как использовать OpenGL ES/GLKit для рисования этих данных на устройстве. Может быть, некоторые из людей, которые это сделали, могут поделиться несколькими вещами?