android中的离线路由

时间:2013-11-04 11:07:48

标签: android routing openstreetmap offline osmdroid

我正在尝试开发一个Android应用程序来处理离线地图。感谢一些帮助,我创建了地图,并且我已经能够离线加载地图了。

现在我正在尝试创建路线,但我还不太了解如何去做。

如果我是正确的,我必须使用osm文件,该文件具有节点,方式和关系,如here所述。

我的问题是,如何将此文件的数据加载到我的应用程序?我无法找到如何将此数据加载到应用程序的任何示例。我发现的是,这个osm文件可以转换为更小的pbf文件。

有谁能解释我如何使用这个osm数据?谁能举个例子?或者我采取了错误的做法?

此代码加载一个700kb的OSM文件,但是因为它有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。

由于

2 个答案:

答案 0 :(得分:8)

看一下Graphhopper库。截至目前,这似乎是可用于在android中路由OSM数据的最佳库。

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

答案 1 :(得分:-1)

Mapsforge有一个库,用于压缩osm数据并有效地读取它。它可能不是您的解决方案,但它比使用SAX解析器

更好