Android Skobbler Maps 2.4 SDK - Offline/Prebundled 地图崩溃
Android Skobbler Maps 2.4 SDK - Offline/Prebundled Maps Crashing
我使用旧版本的 Skobbler 地图已经有一段时间了,并且发现它非常成功。我最近开始升级到 2.4 版,以获得此版本中提供的一些额外功能('via points' 是我感兴趣的主要功能)。
我可以获得AndroidSDKDemo项目运行。我可以得到我自己的项目运行。但是一旦我添加了一个离线包,应用程序每次启动时都会崩溃,并显示 "Fatal Signal 11 0x00000004".
在我将离线地图包添加到SKMaps.zip文件后,无论我将连接模式设置为在线还是离线,应用程序仍然崩溃,只是基于文件的存在在预装的地图文件夹中。
我通过AndroidSDKDemo工程下载了离线地图包。然后,我使用 android "adb backup -noapk" 命令创建应用程序文件的压缩版本,并提取 SKMaps 文件夹。然后我将 "v1" 文件夹从 "Maps" 移动到 "PreinstalledMaps",并压缩文件,然后将此文件添加到我的资产文件夹中的测试应用程序(崩溃的应用程序)。
看来崩溃可能与 SKMaps.zip 相关...如果我从演示项目中获取 SKMaps.zip 文件(未更改,只是直接从网上下载),并将其放入我的测试应用程序中 - 该应用程序运行良好。如果我使用备份中创建的 SKMaps 文件夹(因此包含 "Maps" 文件夹中的信息,并且没有移动此文件中的任何内容(甚至没有将任何内容移动到“/PreinstalledMaps”),然后将此文件夹放入我的测试项目,应用程序崩溃了。
有人知道我该如何解决这个问题吗?这让我非常沮丧,因为我无法真正弄清楚为什么事情不起作用。我可能做错了什么,但我不知道这可能是什么。
在此先感谢您的帮助
SKMaps.zip 中的结构必须与演示中的结构相同,修改或删除任何文件都可能导致一些意外行为,最糟糕的情况是应用程序崩溃。
要使用离线地图,您首先必须设置预安装的MapsPath(在我们的AndroidSDKDemo DemoUtils 方法initializeLibrary 取消注释initMapSettings.setPreinstalledMapsPath(app.getMapResourcesDirPath()
+ "/预装地图"); ) 然后有两种方法
- 按以下方式更改资产:解压缩 SKMaps zip 并在文件夹 PreinstalledMaps/v1/20141230/package/ 中添加 2.4 的 .skm 地图在资产中重新制作存档<-不幸的是,这种方法不是很可靠对于大地图包
- 另一种选择是手动添加包。在我们的 AndroidSDKDemo 中默认情况下,如果有 space 地图资源放在内部存储器中,但这可以在方法 chooseStoragePath 中的 SplashActivity 中更改,以便方法 returns 只是 context.getExternalFilesDir (空).toString()。使用文件管理器应用程序(e.g.Astro 文件管理器)将文件复制到 [外部存储]/Android/data/com.skobbler.sdkdemo/files/SKMaps/PreinstalledMaps/v1/20141230/package/
我在sdk 2.3中加载地图时遇到过类似的问题。
我通过在初始化地图之前执行此线程来解决它。
final SKPrepareMapTextureThread prepThread = new SKPrepareMapTextureThread(this, mapResourcesDirPath, zip, this);
prepThread.start();
当方法:
@Override
public void onMapTexturesPrepared(boolean arg0) {
}
"onMapTexturesPrepared" 被调用,您可以使用预装地图初始化地图:
initMapSettings.setPreinstalledMapsPath(mapResourcesDirPath+"/PreinstalledMaps");
(....)
SKMaps.getInstance().initializeSKMaps(getApplicationContext(), initMapSettings, API_KEY);
我希望对你有所帮助,对我有用。
原来我有点傻。我压缩的是 SKMaps 文件夹,而不是 SKMaps 文件夹中的文件。这意味着我的 zip 看起来像这样:
SKMaps.zip/SKMaps/PreinstalledMaps/...
它需要看起来像这样:
SKMaps.zip/PreinstalledMaps/...
简单的解决方案,但对我来说不是很明显。
抱歉浪费时间。
我使用旧版本的 Skobbler 地图已经有一段时间了,并且发现它非常成功。我最近开始升级到 2.4 版,以获得此版本中提供的一些额外功能('via points' 是我感兴趣的主要功能)。
我可以获得AndroidSDKDemo项目运行。我可以得到我自己的项目运行。但是一旦我添加了一个离线包,应用程序每次启动时都会崩溃,并显示 "Fatal Signal 11 0x00000004".
在我将离线地图包添加到SKMaps.zip文件后,无论我将连接模式设置为在线还是离线,应用程序仍然崩溃,只是基于文件的存在在预装的地图文件夹中。
我通过AndroidSDKDemo工程下载了离线地图包。然后,我使用 android "adb backup -noapk" 命令创建应用程序文件的压缩版本,并提取 SKMaps 文件夹。然后我将 "v1" 文件夹从 "Maps" 移动到 "PreinstalledMaps",并压缩文件,然后将此文件添加到我的资产文件夹中的测试应用程序(崩溃的应用程序)。
看来崩溃可能与 SKMaps.zip 相关...如果我从演示项目中获取 SKMaps.zip 文件(未更改,只是直接从网上下载),并将其放入我的测试应用程序中 - 该应用程序运行良好。如果我使用备份中创建的 SKMaps 文件夹(因此包含 "Maps" 文件夹中的信息,并且没有移动此文件中的任何内容(甚至没有将任何内容移动到“/PreinstalledMaps”),然后将此文件夹放入我的测试项目,应用程序崩溃了。
有人知道我该如何解决这个问题吗?这让我非常沮丧,因为我无法真正弄清楚为什么事情不起作用。我可能做错了什么,但我不知道这可能是什么。
在此先感谢您的帮助
SKMaps.zip 中的结构必须与演示中的结构相同,修改或删除任何文件都可能导致一些意外行为,最糟糕的情况是应用程序崩溃。
要使用离线地图,您首先必须设置预安装的MapsPath(在我们的AndroidSDKDemo DemoUtils 方法initializeLibrary 取消注释initMapSettings.setPreinstalledMapsPath(app.getMapResourcesDirPath() + "/预装地图"); ) 然后有两种方法
- 按以下方式更改资产:解压缩 SKMaps zip 并在文件夹 PreinstalledMaps/v1/20141230/package/ 中添加 2.4 的 .skm 地图在资产中重新制作存档<-不幸的是,这种方法不是很可靠对于大地图包
- 另一种选择是手动添加包。在我们的 AndroidSDKDemo 中默认情况下,如果有 space 地图资源放在内部存储器中,但这可以在方法 chooseStoragePath 中的 SplashActivity 中更改,以便方法 returns 只是 context.getExternalFilesDir (空).toString()。使用文件管理器应用程序(e.g.Astro 文件管理器)将文件复制到 [外部存储]/Android/data/com.skobbler.sdkdemo/files/SKMaps/PreinstalledMaps/v1/20141230/package/
我在sdk 2.3中加载地图时遇到过类似的问题。 我通过在初始化地图之前执行此线程来解决它。
final SKPrepareMapTextureThread prepThread = new SKPrepareMapTextureThread(this, mapResourcesDirPath, zip, this);
prepThread.start();
当方法:
@Override
public void onMapTexturesPrepared(boolean arg0) {
}
"onMapTexturesPrepared" 被调用,您可以使用预装地图初始化地图:
initMapSettings.setPreinstalledMapsPath(mapResourcesDirPath+"/PreinstalledMaps");
(....)
SKMaps.getInstance().initializeSKMaps(getApplicationContext(), initMapSettings, API_KEY);
我希望对你有所帮助,对我有用。
原来我有点傻。我压缩的是 SKMaps 文件夹,而不是 SKMaps 文件夹中的文件。这意味着我的 zip 看起来像这样:
SKMaps.zip/SKMaps/PreinstalledMaps/...
它需要看起来像这样: SKMaps.zip/PreinstalledMaps/...
简单的解决方案,但对我来说不是很明显。
抱歉浪费时间。