jjzjj

android - 下载 osmdroid map

coder 2023-11-24 原文

我正在开发一个需要离线使用 map 的应用程序。我正在使用 osmdroid 和 osmbonuspack

要下载我试过的 map :

对我来说,理想的做法是从应用程序本身下载 map ,而我只想下载您所在轨道上的 map ,而不是完整的部分。

我该如何解决?

有什么方法可以通过我的应用程序从手机下载 map 吗?

最佳答案

工作解决方案 MobileAtlasCreator / MOBAC :

有一个osmdroid documentation ,但它非常薄弱,有时甚至已经过时。

我在连续的问题上挣扎了一段时间。以下是 osmdroid v4.1 的工作解决方案的详细信息。

1) 使用 MOBAC 构建离线 map 时:

  • 由于 Mapnik map 已有效锁定,因此选择“OpenStreetMap MapQuest”作为来源。
  • 图集格式:选择“Osmdroid ZIP”
  • 注意勾选您需要的所有缩放级别。默认情况下,没有被选中。

选择您的区域,创建您的“ map 集”。这会生成一个 zip 文件。

在您的设备上上传 zip 文件,位于/sdcard/osmdroid/ (具体路径可能因设备而异。如果您已经使用过 osmdroid,则此目录必须已经存在)

文件名无关紧要。扩展名必须是“.zip”

2) 现在,在您的 osmdroid 应用程序中,您的 onCreate 方法应该是这样的:

@Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    map = (MapView) findViewById(R.id.map);
    map.setTileSource(new XYTileSource("MapQuest",
        ResourceProxy.string.mapquest_osm, 0, 18, 256, ".jpg", new String[] {
            "http://otile1.mqcdn.com/tiles/1.0.0/map/",
            "http://otile2.mqcdn.com/tiles/1.0.0/map/",
            "http://otile3.mqcdn.com/tiles/1.0.0/map/",
            "http://otile4.mqcdn.com/tiles/1.0.0/map/"}));
    map.setBuiltInZoomControls(true);
    map.setMultiTouchControls(true);
    map.setUseDataConnection(false); //optional, but a good way to prevent loading from the network and test your zip loading. 
    IMapController mapController = map.getController();
    mapController.setZoom(_A ZOOM LEVEL YOU HAVE IN YOUR ZIP_);
    GeoPoint startPoint = new GeoPoint(_POSITION SOMEWHERE INSIDE YOUR MAP_);
    mapController.setCenter(startPoint);
}

在这段代码中,2个参数值非常重要:

“MapQuest”名称(具有此精确拼写)是强制性的 => 这用作 zip 文件内的内部路径。如果打开 zip 文件,您将看到 MOBAC 创建了这个“MapQuest”目录。

.jpg"扩展名也是强制性的 => 因为 MOBAC 在 .jpg 扩展名的 zip 中创建 MapQuest 瓦片(重要的是要注意,因为 osmdroid 中的标准瓦片源都使用 ".png"扩展名)。

在这个阶段,它应该没问题 - 只要您确实将 map View 定位在属于 map 集(缩放级别和位置)的区域上。

3) 返回 MOBAC... 您还可以选择以下图集格式:“Osmdroid SQLite”或“MBTiles SQLite”。 在/sdcard/osmdroid/中传输文件(Layer.sqlite 或 Layer.mbtiles)

同样,在您的 XYTileSource 构造函数中,扩展名必须是“.jpg”。名字并不重要。

两者都运行良好。

4) 选择“Osmdroid GEMF”格式将不起作用:它是 known bug在 GEMF 中处理 jpg tiles。 编辑 > 在 MOBAC 中,您可以使用“自定义图 block 处理”功能将 JPG 图 block 转换为 PNG 格式。然后“Osmdroid GEMF”就可以了。

关于android - 下载 osmdroid map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22862534/

有关android - 下载 osmdroid map的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  3. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  4. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  5. ruby - 下载位置 Selenium-webdriver Cucumber Chrome - 2

    我将Cucumber与Ruby结合使用。通过Selenium-Webdriver在Chrome中运行测试时,我想将下载位置更改为测试文件夹而不是用户下载文件夹。我当前的chrome驱动程序是这样设置的:Capybara.default_driver=:seleniumCapybara.register_driver:seleniumdo|app|Capybara::Selenium::Driver.new(app,:browser=>:chrome,desired_capabilities:{'chromeOptions'=>{'args'=>%w{window-size=1920,1

  6. ruby-on-rails - HTTParty 的内存问题和下载大文件 - 2

    这会导致Ruby出现内存问题吗?我知道如果大小超过10KB,Open-URI会写入TempFile。但是HTTParty会在写入TempFile之前尝试将整个PDF保存到内存吗?src=Tempfile.new("file.pdf")src.binmodesrc.writeHTTParty.get("large_file.pdf").parsed_response 最佳答案 您可以使用Net::HTTP。参见thedocumentation(特别是标题为“流媒体响应机构”的部分)。这是文档中的示例:uri=URI('http://e

  7. ruby - 强制浏览器下载文件而不是打开文件 - 2

    我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.

  8. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  9. ruby-on-rails - Rubygems - 包在哪里下载? - 2

    当你安装一个新包时,例如,'geminstallfb-graph',文件下载到哪里了? 最佳答案 使用此命令查找特定gem的安装位置:gemwhich例如:gemwhichfb-graph 关于ruby-on-rails-Rubygems-包在哪里下载?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13200065/

  10. ruby - 从谷歌开发者网站下载后,client_secret.json 为空 - 2

    我正在尝试从googleAPI下载client_secret.json。我正在执行https://developers.google.com/gmail/api/quickstart/ruby中列出的步骤.使用此向导在GoogleDevelopersConsole中创建或选择项目并自动启用API。在左侧边栏中,选择同意屏幕。选择电子邮件地址并输入产品名称(如果尚未设置),然后单击“保存”按钮。在左侧边栏中,选择凭据并点击创建新客户端ID。选择应用程序类型已安装应用程序,已安装应用程序类型为其他,然后单击“创建客户端ID”按钮。点击新客户端ID下的下载JSON按钮。将此文件移动到您的工作

随机推荐