3

オフライン マップを操作する Android アプリを開発しようとしています。おかげで、マップを作成し、マップをオフラインで読み込むことができました。

今、ルートを作成しようとしていますが、その方法をよく理解していません。

私が正しければ、ここで説明されているようなノード、ウェイ、リレーションを含むosmファイルを使用する必要があります。

私の質問は、このファイルのデータをアプリにロードするにはどうすればよいですか? このデータをアプリにロードする方法の例を見つけることができませんでした。私が発見したのは、この 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 を使用しています。

ありがとう

4

2 に答える 2

8

Graphhopper ライブラリを見てください。現時点では、Android で OSM データをルーティングするために利用できる最良のライブラリのようです。

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

于 2014-06-08T18:05:08.000 に答える
0

Mapsforge には、osm データを圧縮して効率的に読み取るためのライブラリがあります。それは解決策ではないかもしれませんが、SAX パーサーを使用するよりはましです。

于 2016-01-03T13:49:45.033 に答える