Автономная маршрутизация в Android

Я пытаюсь разработать приложение для Android для работы с автономными картами. Благодаря некоторой помощи я создал карту и смог загрузить карты в автономном режиме.

Теперь я пытаюсь создать маршруты, но я не совсем понял, как это сделать.

Если я прав, я должен использовать файл osm, в котором есть узлы, пути и отношения, подобные описано здесь.

Мой вопрос: как я могу загрузить данные этого файла в свое приложение? Я не смог найти ни одного примера того, как загрузить эти данные в приложение. Все, что я обнаружил, это то, что этот файл osm можно преобразовать в меньший файл pbf.

Может ли кто-нибудь объяснить мне, как использовать эти данные OSM? Может ли кто-нибудь привести мне пример? Или я использую неправильный подход?

Этот код загружает файл OSM размером 700 КБ, но не загружает мой, потому что у него 99 МБ.

               // create the factory
           SAXParserFactory factory = SAXParserFactory.newInstance();
           // create a parser
           SAXParser parser = factory.newSAXParser();

           // create the reader (scanner)
           XMLReader xmlreader = parser.getXMLReader();

           // assign our handler
           xmlreader.setContentHandler(osmHandler);


           xmlInputStream = context.getResources().openRawResource(R.raw.lisboa);
           //xmlInputStream = context.getResources().openRawResource(R.raw.milano);
           //xmlInputStream = new FileInputStream(new File(Environment.getExternalStorageDirectory()+File.separator+"MyMaps","Lissabon.osm"));

           xmlreader.parse(new InputSource(xmlInputStream));
           osmHandler.isLoaded=true;

Я использую osmbonuspack_v3.4 и osmdroid_3.0.10.

Спасибо


person Short    schedule 04.11.2013    source источник


Ответы (2)


Взгляните на библиотеку Graphhopper. На данный момент это лучшая библиотека для маршрутизации данных OSM в Android.

https://github.com/graphhopper/graphhopper/blob/master/docs/android/index.md

person Nirab Pudasaini    schedule 08.06.2014
comment
это не очень хорошая библиотека, потому что она может работать только с одним графом (одной страной или городом): discuss.graphhopper.com/t/ - person user924; 12.12.2018

В Mapsforge есть библиотека для сжатия данных osm и для их эффективного чтения. Возможно, это не ваше решение, но это будет лучше, чем использование парсера SAX.

person spy    schedule 03.01.2016
comment
Mapsforge не имеет ничего общего с маршрутизацией - person user924; 12.12.2018