0

0.3.0 の mapsforge ライブラリの設定に関する正確な手順について助けを求めています。0.3.0 ブランチから必要なすべてのクラスをダウンロードしましが、レンダリング用のリソースを設定する方法がわからないという問題があります。以下は私のlogcatエラーです:

03-30 17:02:23.475: E/DatabaseRenderer(17312): org.xml.sax.SAXException: No input specified.
03-30 17:02:23.475: E/DatabaseRenderer(17312):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:288)
03-30 17:02:23.475: E/DatabaseRenderer(17312):  at org.mapsforge.android.maps.rendertheme.RenderThemeHandler.getRenderTheme(RenderThemeHandler.java:77)
03-30 17:02:23.475: E/DatabaseRenderer(17312):  at org.mapsforge.android.maps.mapgenerator.databaserenderer.DatabaseRenderer.getRenderTheme(DatabaseRenderer.java:66)
03-30 17:02:23.475: E/DatabaseRenderer(17312):  at org.mapsforge.android.maps.mapgenerator.databaserenderer.DatabaseRenderer.executeJob(DatabaseRenderer.java:149)
03-30 17:02:23.475: E/DatabaseRenderer(17312):  at org.mapsforge.android.maps.mapgenerator.MapWorker.doWork(MapWorker.java:73)
03-30 17:02:23.475: E/DatabaseRenderer(17312):  at org.mapsforge.android.maps.PausableThread.run(PausableThread.java:94)

DatabaseRenderer の次の行からのように見えるので、私は本当に混乱しています:

private static RenderTheme getRenderTheme(JobTheme jobTheme) {
    InputStream inputStream = null;
    try {
        inputStream = jobTheme.getRenderThemeAsStream(); //THIS LINE

jobTheme クラスを見るとさらに混乱します。

public interface JobTheme extends Serializable {
/**
 * @return an InputStream to read the render theme data from.
 * @throws FileNotFoundException
 *             if the render theme file cannot be found.
 */
    InputStream getRenderThemeAsStream() throws FileNotFoundException;
}

これをインターフェイス クラスのメソッドとしてメソッドとしてデバッグする方法がわかりません。では、jobTheme オブジェクトを使用してそれを呼び出すことはどのように可能でしょうか?

これについて何か助けていただければ幸いです、ありがとう!

4

1 に答える 1

0

Maps Forge タイル プロバイダーを統合し (Google マップ オーバーレイでオフライン マップとして使用するため)、同様の問題がありました。組み込みInternalRenderTheme.OSMARENDERが機能しませんでした。

これが私がやったことです:

/**
 * For some reason, if we just use InternalRenderTheme.OSMARENDER, it fails to work (the XML parser gets a NULL
 * as the input stream).  It must be something to do with class loading in dependent libraries.
 * Anyway, this code properly opens the resource in the MapsForge jar as an input stream.
 */
static private class RenderTheme implements JobTheme
{
    static private final String path = "/org/mapsforge/android/maps/rendertheme/osmarender/osmarender.xml";

    @Override
    public InputStream getRenderThemeAsStream()
    {
        return getClass().getResourceAsStream(path);
    }
}

そして、タイル プロバイダーを初期化するときにこれを設定しました。

mapGenerator = new DatabaseRenderer();
mapDatabase = new MapDatabase();
mapGenerator.setMapDatabase(mapDatabase);

jobParameters = new JobParameters(new RenderTheme(), DEFAULT_TEXT_SCALE);

これが役立つことを願っています。

于 2013-08-07T20:59:27.450 に答える