【问题标题】:Code to Display the Tilemills mbtiles in android project在 android 项目中显示 Tilemills mbtiles 的代码
【发布时间】:2014-10-23 09:10:09
【问题描述】:

我正在开发一个 android 项目,在该项目中我必须使用 mbtiles 显示离线地图。是否有任何教程显示如何在android项目中设置mbtiles。

【问题讨论】:

    标签: android mapbox mbtiles


    【解决方案1】:

    我在这里写了一篇关于如何使用 Maplibre 或 Mapbox SDK 显示本地离线 MBTiles 文件的详细教程 -

    https://medium.com/@ty2/how-to-display-offline-maps-using-maplibre-mapbox-39ad0f3c7543

    【讨论】:

      【解决方案2】:

      很抱歉,我很抱歉,但 www.google.com 似乎不是你最好的朋友...

      无论如何,让我们有建设性:

      1.) 您可以使用 MapBox SDK。 Here 是有关如何使用在线地图的示例的链接。现在,这对离线地图没有多大用处,但在那里你可以找到 SDK。只需下载它,您还可以在其中找到一个测试应用程序,您可以在其中了解这些人是如何做到的。

      我相信必须有一种更简单的方法来安装库,但我必须导入许多新东西才能完成这项工作。另外,请小心获取最新的库 jar,因为我有 okhttp-urlconnection-2.0.0.jar 并且应用程序在显示视图时崩溃了。然后我发现我需要 2.1.0 版本的 jar。

      2.) 对于离线地图导入,我发现 link 很有帮助,因为它提供了一些代码,减轻了我正确显示地图的痛苦。 如果链接失效代码状态:

      例如,开始在 WearActivity 中创建一个名为 setupMaboxOffline() 的方法:

      public void setupMaboxOffline() {
          MapView mapView = (MapView) findViewById(R.id.mapview);
          mapView.setZoom(5);
          mapView.setCenter(new LatLng(38.8977, -77.0365));
          mapView.setTileSource(new MBTilesLayer(this, "control-room-0.2.0.mbtiles"));
      }
      

      然后,在 onCreate() 中的 WatchViewStub 中调用它。 Android Wear 使用此存根根据用户的手表形状选择正确的布局(圆形或方形)。

      上面引用的 MapView 看起来像这样(在两种布局中):

      <com.mapbox.mapboxsdk.views.MapView
          android:id="@+id/mapview
          android:layout_width="fill_parent"
          android:layout_height="fill_parent" />
      

      如果您需要 xml 中的 mapbox id 属性,this SO 问题将得到答案。

      基本上,因为我只显示了地图,所以这相当简单...... 您需要资产文件夹中的 .mbtiles 文件。 库需要显示没有错误;)。 在您的 xml 文件中,您已经放置了 MapView 自定义视图。

      然后在您的活动中:

      MapView mapView = (MapView) findViewById(R.id.mapview);
      mapView.setTileSource(new MBTilesLayer(this, "map.mbtiles"));
      

      然后您可以添加自定义设置,例如缩放等。

      祝您离线地图好运。 :)

      【讨论】:

      • 进一步研究这个问题,我发现了一些可能对其他人有帮助的东西:当你设置 mapView 时,你还应该添加:mapView.setMinZoomLevel(1); 这是地图显示的要求之一。和此外,一位正在调查 mbtiles 工作的人建议您应该拥有多个图像大小,以便您的地图正确显示。对我来说,当我创建一个室内离线地图时,有些地方是模糊的。那是因为我只使用了一张图片。这是link
      • 我已经成功实现了这段代码并且工作正常。但问题是,当我构建 APK 时,它会变成一个巨大的文件,因为我的 MBTiles 文件太大。这就是为什么打开应用程序需要很长时间的原因。有什么方法可以从在线服务器存储(例如example.com/mymap.mbtiles)访问 MBTiles 文件?
      猜你喜欢
      • 1970-01-01
      • 2014-03-10
      • 2019-06-25
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      相关资源
      最近更新 更多