在OSMDroid中下载特定的maptile到缓存

lyk*_*lyk 9 maps android offline-caching osmdroid

我目前正在研究一个学校项目,我正在尝试学习将OSM地图图块下载到手机的本地内存/缓存中的技术,以便用户能够在离线时查看地图.

这是通过给出特定位置来完成的,并且在距离该位置的特定半径/距离内的地图图块将被下载到手机存储器中(当存在在线连接时)以用于离线显示.

但是,我在理解OSMDroid的API方面遇到了一些麻烦.根据我的理解,所涉及的课程似乎是:

如果我弄错了,请纠正我.

另外,在MapTileBase(我认为是提供者)中,getMapTile返回android.graphics.drawable.Drawable.

这个Drawable类甚至与离线地图显示的概念有关吗?

希望有人可以告诉我在哪里准确地将地图下载到手机的内存中,以及我们如何编辑地图以显示路线,引脚等界面项目.

gar*_*man 1

我没有确切的答案,因为您正在寻找一种在 MapView 尚未导航到的区域之外离线缓存的方法。内置的缓存支持已经存在,但不完全是您想要的方式。

如果您计划缓存而不仅仅是提供自己的离线地图图块,则您将需要在线下载功能。我会看一下 MapTileDownloader,也许会尝试实现您自己的版本。MapTileDownloader.TileLoader.loadTile() 方法采用 MapTileRequestState,我相信 MapTileProviderArray 在需要地图图块时会调用它。

如果您可以复制现有 MapTileDownloader 的 TileLoader 功能,您可能可以将自己的相关 MapTileRequestState 或直接 MapTile 注入到请求的状态。例如,使用名为 MapTileRequestState 的 TileLoader,检查它,弄清楚如何构造新的 MapTileRequestState/MapTile 来表示当前视图之外的图块。但这并不容易,因为您必须处理不同的缩放级别,并且根据缩放级别,半径应该更小,等等......较低的缩放级别 18 将具有比 18 更大的平铺半径。更高的10。

就我个人而言,我最近正在尝试 100% 离线工作,因此我没有任何示例代码可以提供帮助。祝你好运,尽管已经过去几个月了。

  • 无论如何,感谢您的输入=)我通过下载specifile MapTiles并将它们压缩到手机中以供离线显示,解决了这个问题。我设法使下载适用于一个缩放级别,但在多个缩放级别时再次出现问题[此处](http://stackoverflow.com/questions/13930364/asynctask-not-executing-properly-according-to-logic) (2认同)