java - Android - Osmdroid 6.0.2,从 SqlTileWriter 切换到 TileWriter(本地存储)

标签 java android osmdroid

我正在尝试在应用程序中使用 Osmdroid。我已经有一个图 block 服务器并且想要使用这些图 block 。查看文档使用 setTileSource(new XYTileSource()) 奇迹发生了。我不得不提的是,文档的很多部分都有点陈旧。

上述服务器的图 block 已在应用程序中的不同功能中使用。按照逻辑,我想使用相同的缓存位置,这样系统中就不会出现重复的图 block 。再次通过文档,使用 Configuration.getInstance().setOsmdroidTileCase(new File("path")) ,一切都进展顺利。但这并不容易,因为文档引用了 Osmdroids Constants 类,该类在最新的稳定版中已更改。

最后一部分是将 SqlTileWriter 更改为普通的 TileWriter,因为我们已经从其他功能下载了图像文件。这是我想不通的地方。我正在使用:

MapTileProviderBasic tileProvider = new MapTileProviderBasic(getActivity(), new XYTileSource("My Tiles", 5, 16, 256, ".png",
            new String[]{"SERVER_URL"}), new TileWriter());
mMap.setTileProvider(tileProvider);

事情变得很奇怪。图像实际上正在下载,但 map 仅显示加载背景。在日志中,我收到 StorageUtils 告诉我存储不可写。授予应用程序权限,现在可写,但仍然没有任何权限。我注意到,除了tiles文件夹之外,.db文件已被创建,但tiles表是空的。我回到上面的代码,并将 new TileWriter() 替换为 new SQLTileWriter() 只是为了进行完整性检查, map 工作得很好,没有任何权限。

这是主要问题。 如何从 SQL 更改为存储 TileWriter?

最佳答案

对于任何可能遇到此问题的人,我在 Osmdroid 的 Github 页面中打开了一个问题,我们在其中发现并解决了该问题。看看这个link了解更多信息。

关于java - Android - Osmdroid 6.0.2,从 SqlTileWriter 切换到 TileWriter(本地存储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52940052/

相关文章:

java 。为什么这个for循环不能正常工作

android - 为什么 MapView onTouchListener 只触发一次?

java - 如何在 PreferenceFragment 中扩充工具栏?

java - 在 Android 中检查互联网连接时出错

android - 从文件和 SQLiteOpenHelper 中读取 SQL

android - OsmBonuspack - GeocoderNominatim::getFromLocationName - 来自服务器的无效响应:HTTP/1.1 403 Forbidden

android - osmdroid - 显示更大的瓷砖

java - 将十六进制(二进制补码)转换为 Java 值

java - KafkaAvroDeserializer 因 Kyro 异常而失败

java - 使用不同版本的 JDK 和相同的目标和源版本编译 Java 是否保证相同的执行?