首页 > 解决方案 > Android Studio如何使用osmdroid和mbtiles显示离线地图

问题描述

我们正在开发一款必须显示一个特定位置(例如 3-7 个相邻岛屿)的离线地图的 Android 应用程序。我们成功地展示了整个世界,但这太重了。当手机离线时,地图的缩放有限(变得模糊并开始滞后)。

我设想该应用程序类似于 Maps.me,如果您处于离线状态,您可以连续放大下载的地图。一直在尝试了解https://github.com/osmdroid/osmdroid/wiki/Offline-Map-Tiles并在 2 天半之后,我能够使用 Maperitive 获得 mbtiles。但是从那里开始,我对下一步是什么感到困惑。从github教程中,我被困在这里:https ://github.com/osmdroid/osmdroid/wiki/Offline-Map-Tiles#using-offline-tile-archives 这是否意味着我必须手动将mbtiles放到路径还是有办法自动(或通过代码)存储和使用mbtiles?

几周前我刚开始学习 osm 和 android studio,我需要帮助。很糟糕。有人请赐教。

标签: androidandroid-studioopenstreetmaposmdroidmbtiles

解决方案


  • 您可以将磁贴存档托管在您提供给应用用户下载的服务器上
  • 您可以使用 CacheManager 实用程序使您的用户能够在离线之前缓存和/或永久存档给定区域的切片
  • 正如@Josef Adamcik 所说,如果瓷砖数量很少,您可以将它们直接放入/assets/YourTileSourceHere. 然后告诉 osmdroid 使用匹配该名称的地图瓦片源
  • 如果磁贴存档很小,您也可以将其放入,raw然后在安装时将其复制到 osmdroid 可以读取的位置,例如/data/data/yourpackagename(这也称为应用程序私有存储或复制到 /sdcard/osmdroid 或任何您想要的地方,只需使用 Configuration.getInstance().set.... 方法为其配置路径。

如果您有改进 wiki 的建议,请告诉我


推荐阅读