2

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

4

2 回答 2

1

很抱歉成为 mr.Obvious,但 www.google.com 似乎不是你最好的朋友......

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

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

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

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

例如,要开始在 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 属性,这个SO 问题就会得到答案。

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

然后在您的活动中:

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

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

祝您离线地图好运。:)

于 2014-11-25T15:47:35.597 回答
0

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

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

于 2021-08-19T20:14:19.923 回答