gpt4 book ai didi

android - 如何通过将 map 图 block 图像保存到 sqlite 数据库中来使用 osmdroid 实现离线 map ?

转载 作者:IT王子 更新时间:2023-10-29 06:22:03 24 4
gpt4 key购买 nike

我有一个项目也需要在离线模式下显示 map 数据。我同样使用了 OpenStreet map 。我已经保存了 map 图像(图 block ),每个图 block 都由数据库中的图 block 键引用。我想从数据库访问这些 map 图 block 并相应地使用它们。

请给我建议。

提前致谢。

最佳答案

Osmdroid 中的 map 图 block 由 map 图 block 提供商提供。 Osmdroid 使用的默认图 block 提供程序是 MapTileProviderBasic .该提供商扩展了 MapTileProviderArray ,这意味着它是一些其他图 block 提供者的数组 - 当请求一个图 block 时,这些图 block 提供者将一个一个地询问图 block 图像,直到其中一个提供它。看一下 MapTileProviderBasic 的构造函数:

public MapTileProviderBasic(final IRegisterReceiver pRegisterReceiver,
final INetworkAvailablityCheck aNetworkAvailablityCheck,
final ITileSource pTileSource) {

super(pTileSource, pRegisterReceiver);
final TileWriter tileWriter = new TileWriter();

final MapTileFilesystemProvider fileSystemProvider =
new MapTileFilesystemProvider(pRegisterReceiver, pTileSource);
mTileProviderList.add(fileSystemProvider);

final MapTileFileArchiveProvider archiveProvider =
new MapTileFileArchiveProvider(pRegisterReceiver, pTileSource);
mTileProviderList.add(archiveProvider);

final MapTileDownloader downloaderProvider =
new MapTileDownloader(pTileSource, tileWriter, aNetworkAvailablityCheck);
mTileProviderList.add(downloaderProvider);
}

已将三个 map 图 block 提供程序添加到提供程序数组中,顺序如下:

  • MapTileFilesystemProvider - 从文件系统(SD 卡目录)提供图 block
  • MapTileFileArchiveProvider - 提供文件系统中存档的切片
  • MapTileDownloader - 通过从 Internet(例如从 OSM 服务器)下载切片来提供切片

因此 MapTileProviderBasic 首先在文件系统中查找给定的图 block ,如果该图 block 不可用,则它会在存档文件中查找,如果不可用,则再次下载该图 block 来自互联网。

好的,这是默认机制。如果您想更改此机制以查找存储在数据库中的图 block ,那么您可以创建自己的类似于 MapTileProviderBasic 的类。因此,您的类还可以扩展 MapTileProviderArray 并仅在构造函数中使用其他提供程序。在 Osmdroid 中有一个类 DatabaseFileArchive这可能会帮助您从数据库中读取图 block 。

创建自己的 tile provider 后,您应该使用它而不是默认的。 map 图 block 提供程序附加到 MapViewMapView 的一些构造函数将 MapTileProviderBase 作为参数 - 您可以使用其中之一来附加您自己的提供程序。

关于android - 如何通过将 map 图 block 图像保存到 sqlite 数据库中来使用 osmdroid 实现离线 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8136775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com