实时向用户提供 OSMDroid Mapnik 压缩图块集的最佳方法

Best method of deliverying OSMDroid Mapnik zipped tileset to user in live

我正在 Java 中开发一个 Android 应用程序,使用 OSMDroid 以 .zip 文件的形式提供 Mapnik 瓦片格式的离线地图。

我的问题是关于如何将这些地图提供给从 Play 商店下载应用程序的用户。

我不知道我完成的 tileset 的确切大小,但它将是一个大约 100MB 的 .zip 文件。

在原型设计中,我在项目的 /assets 文件夹中包含了一个较小的图块集,并首先 运行 使用 getExternalStoragePublicDirectory(Environment.MEDIA_SHARED) 文件夹将其复制到用户的外部存储目录并替换 /与 /osmdroid 共享(在我的 phone 上是 /storage/emulated/0/osmdroid)并在必要时创建目录。这有点 hack,但它有效。

问题是在外部存储中创建副本时,tileset(大约 100MB)仍然附加到应用程序。这有点浪费 space。我也可能会遇到APK太大的问题。

我考虑允许用户在完成应用程序安装后从 FTP 服务器下载 .zip 文件(提示他们这是一个很大的下载并尽可能使用 WiFi)。我没有详细研究技术细节,但这让我印象深刻,因为它实施起来相当简单。但是,我找不到有关使用此方法的人的任何描述。

所以,我的问题是:

  1. 是否有标准或推荐的方式将 Mapnik 切片交付给实时用户以供离线使用?

  2. 如果有,那是什么? (如果可能,最好带有示例链接)

在此先感谢大家的帮助!

最后我从 FTP 服务器下载了 zip。这已经在现实环境中与一组测试用户进行了测试,似乎运行良好。

zip 文件下载到方法 getExternalFilesDir 返回的目录中。此 returns 应用程序的数据存储目录与硬编码路径相比具有优势,即当应用程序被卸载时,zip 文件也会被删除。