Офлайн маршрутизиране в android

Опитвам се да разработя приложение за Android за работа с офлайн карти. Благодарение на малко помощ, създадох картата и успях да заредя картите офлайн.

Сега се опитвам да създам маршрути, но не разбрах много добре как да го направя.

Ако съм прав, трябва да използвам osm файл, който има възли, начини и релации като описан тук.

Въпросът ми е как мога да заредя данните от този файл в моето приложение? Не успях да намеря нито един пример за това как да заредя тези данни в приложение. Всичко, което открих е, че този osm файл може да бъде преобразуван в по-малък pbf файл.

Може ли някой да ми обясни как да използвам тези osm данни? Може ли някой да ми даде пример? Или използвам грешен подход?

Този код зарежда OSM файл със 700kb, но не зарежда моя, защото има 99MB.

               // 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