2013-11-04 50 views
3

我想開發一個Android應用程序來使用離線地圖。感謝一些幫助,我創建了地圖,並且能夠離線加載地圖。在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。

謝謝

回答

0

Mapsforge具有用於壓縮OSM數據和用於有效地讀出它的庫。它可能不是你的解決方案,但它會比使用SAX解析器更好