2012-03-06 8 views
1

.png.tileにタイルがある場合は。それに.apkを含めることは可能ですか? 私の目的は、マーケットからアプリをダウンロードした後、アプリを開くと、すべてのタイルとすべてのズームレベルがリース1の国(大したものではない)に表示されるはずです。 PS。私はOSMを使用します。 PS.2私の英語の文法は残念です。オフラインマップは.apkファイルに含まれています

EDIT:1か国が大きすぎる可能性があります。 多分1つの州または1つの州といくつかのズームレベル。

EDIT2:これは私が使用した機能であり、入力ストリームについて何ができるのですか?ありがとうございました。

AssetManager assetManager = getAssets(); 

    try { 
     files = assetManager.list("Map"); 
    } catch (IOException e) { 
     Log.e("tag", e.getMessage()); 
    } 
    try { 
     firstField = (EditText) findViewById(R.id.firstId); 
     firstField.setText(Integer.toString(files.length) 
       + " file. File name is " + files[0]); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    try { 
     inputStream = assetManager.open("Map/mapnik.zip"); 
     // String s = null; 
     // s = readTextFile(inputStream); 
     // secondField = (EditText) findViewById(R.id.secondId); 
     // secondField.setText(s); 
    } catch (IOException e) { 
     Toast.makeText(this, "Error" + e.toString(), Toast.LENGTH_SHORT) 
       .show(); 
    } 

答えて

1

はい、アセットフォルダに入れることで含めることができます。アセットにアクセスするにはhttp://developer.android.com/reference/android/content/res/AssetManager.htmlを参照してください。

+0

早速返信いただきありがとうございます。私がしなければならないのは、タイルマップをパックするためにassetManagerを使用することです。そして、私がonCreateでアプリケーションを開くときに、getAsset()を読み込んでsdcardに再度書き込む必要がありますか?私は正しく理解しましたか? – majorl3oat

+0

とほぼ同じです。アセットマネージャを使用してapk内のアセットを取得するのではなく、apkをビルドする前にファイルをアセットフォルダに配置するだけです。ビルドプロセスによって自動的にパックされます。また、資産をSDカードにコピーして使用する必要はありません。その場で直接使用することができます。 InputStreamに対して開くことができます。 – mah

+0

申し訳ありません、私はオフラインカップルの日でした。私は今あなたのコメントを完全に理解しています。しかし、Mapnik.zipファイルがあり、このファイルが/ sdcard/osmdroidで解凍する必要がある場合は、このzipファイルをアセットから取得し、このファイルを前にディレクトリに解凍することができますか?私はこれについてgoogleと入力ストリームだけでtxtファイルを読んだが見つかりました。どうもありがとうございました。 – majorl3oat