首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为0.3.0 mapsforge设置本地项目库

如何为0.3.0 mapsforge设置本地项目库
EN

Stack Overflow用户
提问于 2013-03-30 17:50:29
回答 1查看 611关注 0票数 0

我正在寻求关于设置0.3.0 mapsforge库的确切步骤的帮助。我已经从0.3.0分支here下载了所有需要的类,但我遇到了一个问题,我不确定如何设置渲染资源。下面是我的logcat错误:

代码语言:javascript
复制
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中的这一行:

代码语言:javascript
复制
private static RenderTheme getRenderTheme(JobTheme jobTheme) {
    InputStream inputStream = null;
    try {
        inputStream = jobTheme.getRenderThemeAsStream(); //THIS LINE

当我查看jobTheme类时,它变得更加令人困惑:

代码语言:javascript
复制
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对象来调用它呢?

将非常感谢您的帮助,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-08-08 04:59:27

我集成了一个地图伪造瓦片提供商(在google地图覆盖中用作离线地图),我也遇到了类似的问题。内置的InternalRenderTheme.OSMARENDER就是无法工作。

这就是我最终要做的:

代码语言:javascript
复制
/**
 * 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);
    }
}

然后我在初始化我的磁贴提供程序时设置了这个:

代码语言:javascript
复制
mapGenerator = new DatabaseRenderer();
mapDatabase = new MapDatabase();
mapGenerator.setMapDatabase(mapDatabase);

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

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15717163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档