А вы знаете как реализована прорисовка карт на Ozi?
Там файл карты состоит из двух. Один файл - это данные, размером около 4Кб, второй - само изображение карты, размер которого ограничивается только местом на ваших флэшках. Для открытия карты, выбирается файл данных - программа считывает информацию и подгружает только часть изображения, которая видима на экране. При смещении карты, снова идет пересчет и загружается новая часть изображения. Т.е. для работы программы, не нужно загонять в ОЗУ всю карту, а только ту часть котороя в данный момент отображается на экране.
Сама программа занимает 3 mb, при работе забирает памяти для программ около 2 мб. ИМХО, очень грамотное решение для КПК, для которых ресурсоемкость программ весьма критично. Можно накидать в католог где расположены карты, хоть на гигабайт карт или карт любых размеров, и это никоим образом не влияет на скорость работы программы. Например объем 5 келометровки всей Московсой области 60Мб. А можно хоть 600. В памяти все-равно только кусочек, который в данный момент в видимой части экрана.
Похожий алгоритм реализован и у Tom Tom Navigator.
Почему разработчикам не подумать о таком принципе работы программы? Это даст возможность совершенствовать карту и POI не оглядываясь на ограничения по размерам, загрузке ОЗУ и скорости работы программы. Она (скорость) в этом случае будет стабильна и не зависима от подробности и объемности карты.
Вопрос разработчикам. Как реализован алгоритм P_GPS Pro Mosc
Вопрос разработчикам. Как реализован алгоритм P_GPS Pro Mosc
HP4700 + CF1Gb + SD1Gb + SE Z600 + BT338
Отрендерить целиком векторную карту объёмом 20 Мбайт на КПК невозможно, потому что:
1. Карта гибко масштабируется
2. Даже для одного масштаба, с которым можно работать, не хватит памяти.
3. Даже если бы хватило памяти, программа грузилась бы недопустимо долго.
Так что рендерится именно кусок карты, с учётом текущего масштаба, генерализации карты для этого масштаба и т.п.
1. Карта гибко масштабируется
2. Даже для одного масштаба, с которым можно работать, не хватит памяти.
3. Даже если бы хватило памяти, программа грузилась бы недопустимо долго.
Так что рендерится именно кусок карты, с учётом текущего масштаба, генерализации карты для этого масштаба и т.п.