下载特定的MAPTITES以在osmdroid中缓存



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

这是通过提供特定位置来完成的,并且在距离位置的特定半径/距离之内的地图图块将被下载到电话内存中(在线连接时)以进行离线显示。

但是,我在理解osmdroid的API方面有一些麻烦。从我的理解中,似乎所涉及的课程是:

  • maptilebase
  • mapdownloader
  • ifilesystemcache

如果我误会了,请纠正我。

另外,在maptilebase(我认为是提供商)中,getmaptile返回android.graphics.drabable.drabable.drawable。

这个可绘制的类甚至与离线映射显示的概念有关?

希望有人可以在要求下载到手机的内存中的确切地图上启发我,以及我们如何编辑地图以显示界面项目,例如路由,引脚,等等。

我没有完全答案,因为您正在寻找一种在MapView尚未导航的区域之外缓存的方法。内置的缓存支持在那里,但不完全是您想做的。

如果您打算缓存,而不仅仅是提供自己的离线地图瓷砖,则需要在线下载功能。我会看一下Maptiledownloader,也许尝试实现自己的版本。maptiledownloader.tileloader.loadtile()方法采用一个Maptilerequeststate,我相信需要在需要地图瓷砖时调用Maptileproviderarray。

如果您可以复制现有的Maptiledownloader的TileLoDADER功能,则可能可以将自己的相对Maptilerequeststate或直接的Maptile注入所要求的Maptilerequeststate或直接上升。例如以称为MapTilereQuestState的TileLoader,进行检查,弄清楚如何构建代表当前视图之外瓷砖的新的Maptilerequeststate/Maptile。不过,这并不容易,因为您必须处理不同的变焦级别,并且根据变焦级别,半径应该较小,等等...较低的缩放水平的瓷砖半径较大更高的10。

我个人最近正在尝试100%离线工作,因此我没有任何示例代码可以提供帮助。好运,即使已经有几个月了。

首先,向右转到源https://github.com/osmdroid/osmdroid

有一些Wiki文章将有所帮助,尤其是离线地图瓷砖文章。简而言之,使用MOBAC或OSMDROID提供的工具。OSMBONUSPACK还具有在设备上执行相同任务的工具。

实际上使用此类下载地图图块https://github.com/osmdroid/osmdroid/blob/master/osmdroid-andsrc/src/main/java/java/org/osmdroid/tileprovider/mmodules/maptiledownownloader.java

最新更新