【发布时间】:2014-10-23 09:10:09
【问题描述】:
我正在开发一个 android 项目,在该项目中我必须使用 mbtiles 显示离线地图。是否有任何教程显示如何在android项目中设置mbtiles。
【问题讨论】:
我正在开发一个 android 项目,在该项目中我必须使用 mbtiles 显示离线地图。是否有任何教程显示如何在android项目中设置mbtiles。
【问题讨论】:
我在这里写了一篇关于如何使用 Maplibre 或 Mapbox SDK 显示本地离线 MBTiles 文件的详细教程 -
https://medium.com/@ty2/how-to-display-offline-maps-using-maplibre-mapbox-39ad0f3c7543
【讨论】:
很抱歉,我很抱歉,但 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.setMinZoomLevel(1); 这是地图显示的要求之一。和此外,一位正在调查 mbtiles 工作的人建议您应该拥有多个图像大小,以便您的地图正确显示。对我来说,当我创建一个室内离线地图时,有些地方是模糊的。那是因为我只使用了一张图片。这是link。